diff --git a/src/cli/config-manager/config-manager-pull/config-manager-pull-custom-nodes.ts b/src/cli/config-manager/config-manager-pull/config-manager-pull-custom-nodes.ts new file mode 100644 index 000000000..322aa0a94 --- /dev/null +++ b/src/cli/config-manager/config-manager-pull/config-manager-pull-custom-nodes.ts @@ -0,0 +1,58 @@ +import { frodo } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { configManagerExportCustomNodes } from '../../../configManagerOps/FrConfigCustomNodesOps'; +import { getTokens } from '../../../ops/AuthenticateOps'; +import { verboseMessage } from '../../../utils/Console'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = + frodo.utils.constants; + +const deploymentTypes = [ + CLOUD_DEPLOYMENT_TYPE_KEY, + FORGEOPS_DEPLOYMENT_TYPE_KEY, +]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo config-manager pull custom-nodes', + [], + deploymentTypes + ); + + program + .description('Export custom nodes.') + .addOption( + new Option( + '-n, --node-name ', + 'Custom node display name. If specified, only one custom node is exported.' + ) + ) + .action(async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + + if (await getTokens(false, true, deploymentTypes)) { + if (options.nodeName) { + verboseMessage( + `Fetching custom node with name '${options.nodeName}'` + ); + } else { + verboseMessage('Fetching custom nodes'); + } + const outcome = await configManagerExportCustomNodes(options.nodeName); + if (!outcome) process.exitCode = 1; + } else { + process.exitCode = 1; + } + }); + + return program; +} diff --git a/src/cli/config-manager/config-manager-pull/config-manager-pull.ts b/src/cli/config-manager/config-manager-pull/config-manager-pull.ts index d27bc80da..fb9327378 100644 --- a/src/cli/config-manager/config-manager-pull/config-manager-pull.ts +++ b/src/cli/config-manager/config-manager-pull/config-manager-pull.ts @@ -10,6 +10,7 @@ import ConnectorMappings from './config-manager-pull-connector-mappings'; import CookieDomains from './config-manager-pull-cookie-domains'; import CORS from './config-manager-pull-cors'; import CSP from './config-manager-pull-csp'; +import CustomNodes from './config-manager-pull-custom-nodes'; import EmailProvider from './config-manager-pull-email-provider'; import EmailTemplates from './config-manager-pull-email-templates'; import Endpoints from './config-manager-pull-endpoints'; @@ -52,6 +53,7 @@ export default function setup() { program.addCommand(CookieDomains().name('cookie-domains')); program.addCommand(CORS().name('cors')); program.addCommand(CSP().name('csp')); + program.addCommand(CustomNodes().name('custom-nodes')); program.addCommand(EmailProvider().name('email-provider')); program.addCommand(EmailTemplates().name('email-templates')); program.addCommand(Endpoints().name('endpoints')); diff --git a/src/cli/config-manager/config-manager-push/config-manager-push-custom-nodes.ts b/src/cli/config-manager/config-manager-push/config-manager-push-custom-nodes.ts new file mode 100644 index 000000000..bd5a7ce99 --- /dev/null +++ b/src/cli/config-manager/config-manager-push/config-manager-push-custom-nodes.ts @@ -0,0 +1,58 @@ +import { frodo } from '@rockcarver/frodo-lib'; +import { Option } from 'commander'; + +import { configManagerImportCustomNode } from '../../../configManagerOps/FrConfigCustomNodesOps'; +import { getTokens } from '../../../ops/AuthenticateOps'; +import { verboseMessage } from '../../../utils/Console'; +import { FrodoCommand } from '../../FrodoCommand'; + +const { CLOUD_DEPLOYMENT_TYPE_KEY, FORGEOPS_DEPLOYMENT_TYPE_KEY } = + frodo.utils.constants; + +const deploymentTypes = [ + CLOUD_DEPLOYMENT_TYPE_KEY, + FORGEOPS_DEPLOYMENT_TYPE_KEY, +]; + +export default function setup() { + const program = new FrodoCommand( + 'frodo config-manager pull custom-nodes', + [], + deploymentTypes + ); + + program + .description('Export custom nodes.') + .addOption( + new Option( + '-n, --node-name ', + 'Custom node display name. If specified, only one custom node is exported.' + ) + ) + .action(async (host, realm, user, password, options, command) => { + command.handleDefaultArgsAndOpts( + host, + realm, + user, + password, + options, + command + ); + + if (await getTokens(false, true, deploymentTypes)) { + if (options.nodeName) { + verboseMessage( + `Fetching custom node with name '${options.nodeName}'` + ); + } else { + verboseMessage('Fetching custom nodes'); + } + const outcome = await configManagerImportCustomNode(options.nodeName); + if (!outcome) process.exitCode = 1; + } else { + process.exitCode = 1; + } + }); + + return program; +} diff --git a/src/cli/config-manager/config-manager-push/config-manager-push.ts b/src/cli/config-manager/config-manager-push/config-manager-push.ts index 0e9c55345..604af4a3c 100644 --- a/src/cli/config-manager/config-manager-push/config-manager-push.ts +++ b/src/cli/config-manager/config-manager-push/config-manager-push.ts @@ -2,6 +2,7 @@ import { FrodoStubCommand } from '../../FrodoCommand'; import AccessConfig from './config-manager-push-access-config'; import Audit from './config-manager-push-audit'; import CookieDomains from './config-manager-push-cookie-domain'; +import CustomNodes from './config-manager-push-custom-nodes'; import EmailProvider from './config-manager-push-email-provider'; import EmailTemplates from './config-manager-push-email-templates'; import Endpoints from './config-manager-push-endpoints'; @@ -39,6 +40,6 @@ export default function setup() { program.addCommand(CookieDomains().name('cookie-domains')); program.addCommand(ServiceObjects().name('service-objects')); program.addCommand(UiConfig().name('ui-config')); - + program.addCommand(CustomNodes().name('custom-nodes')); return program; } diff --git a/src/configManagerOps/FrConfigCustomNodesOps.ts b/src/configManagerOps/FrConfigCustomNodesOps.ts new file mode 100644 index 000000000..b5df2453b --- /dev/null +++ b/src/configManagerOps/FrConfigCustomNodesOps.ts @@ -0,0 +1,100 @@ +import { frodo } from '@rockcarver/frodo-lib'; +import fs from 'fs'; + +import { printError } from '../utils/Console'; + +const { saveJsonToFile, getFilePath, saveTextToFile } = frodo.utils; +const { readCustomNode, readCustomNodes, importCustomNodes } = frodo.authn.node; + +/** + * Export all custom nodes to 'custom-nodes/nodes' directory. + * Each custom node will be exported as a JSON file with a reference to its script file. + * The script content will be saved in a separate .js file. + * @param {string} name Optional display name of a custom node to export. If not provided, all custom nodes will be exported. + * @returns {Promise} True if export was successful + */ +export async function configManagerExportCustomNodes( + name?: string +): Promise { + try { + let customNodes; + if (name) { + const customNode = await readCustomNode(undefined, name); + customNodes = [customNode]; + } else { + customNodes = await readCustomNodes(); + } + + for (const node of customNodes) { + const nodeDir = getFilePath( + `custom-nodes/nodes/${node.displayName}/`, + true + ); + const scriptFileName = `${node.displayName}.js`; + const jsonFileName = `${node.displayName}.json`; + + saveTextToFile(`${node.script}`, nodeDir + scriptFileName); + node.script = { file: scriptFileName }; + + const filePath = nodeDir + jsonFileName; + saveJsonToFile(node, filePath, false); + } + + return true; + } catch (error) { + printError(error); + return false; + } +} + +/** + * Import all custom nodes to specified tenant. + * @param {string} name Optional display name of a custom node to import. If not provided, all custom nodes will be exported. + * @returns {Promise} True if export was successful + */ + +export async function configManagerImportCustomNode( + nodeName?: string +): Promise { + try { + if (nodeName) { + const nodeDir = getFilePath(`custom-nodes/nodes/${nodeName}`); + const jsonFilePath = `${nodeDir}/${nodeName}.json`; + const scriptFilePath = `${nodeDir}/${nodeName}.js`; + const customNodeData = { nodeTypes: {} }; + + const importData = JSON.parse(fs.readFileSync(jsonFilePath, 'utf8')); + + if (fs.existsSync(scriptFilePath)) { + importData.script = fs.readFileSync(scriptFilePath, 'utf8'); + } + + customNodeData.nodeTypes[importData._id] = importData; + await importCustomNodes(undefined, nodeName, customNodeData); + } else { + const nodesDir = getFilePath(`custom-nodes/nodes`); + const nodeFolders = fs.readdirSync(nodesDir); + const customNodeData = { nodeTypes: {} }; + + for (const nodeFolder of nodeFolders) { + const jsonFilePath = `${nodesDir}/${nodeFolder}/${nodeFolder}.json`; + const scriptFilePath = `${nodesDir}/${nodeFolder}/${nodeFolder}.js`; + + const importData = JSON.parse(fs.readFileSync(jsonFilePath, 'utf8')); + + if (fs.existsSync(scriptFilePath)) { + importData.script = fs.readFileSync(scriptFilePath, 'utf8'); + } + + customNodeData.nodeTypes[importData._id] = importData; + + await importCustomNodes(undefined, nodeName, customNodeData); + } + } + + return true; + } catch (error) { + printError(error, `Error importing custom nodes`); + } + return false; +} diff --git a/test/client_cli/en/__snapshots__/config-manager-pull-custom-nodes.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-pull-custom-nodes.test.js.snap new file mode 100644 index 000000000..6c25f6123 --- /dev/null +++ b/test/client_cli/en/__snapshots__/config-manager-pull-custom-nodes.test.js.snap @@ -0,0 +1,30 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'config-manager pull custom-nodes' should be expected english 1`] = ` +"Usage: frodo config-manager pull custom-nodes [options] [host] [realm] [username] [password] + +[Experimental] Export custom nodes. + +Arguments: + host AM base URL, e.g.: + https://cdk.iam.example.com/am. To use a + connection profile, just specify a unique + substring or alias. + realm Realm. Specify realm as '/' for the root realm or + 'realm' or '/parent/child' otherwise. (default: + "alpha" for Identity Cloud tenants, "/" + otherwise.) + username Username to login with. Must be an admin user + with appropriate rights to manage authentication + journeys/trees. + password Password. + +Options: + -n, --node-name Custom node display name. If specified, only one + custom node is exported. + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, and + usage examples. +" +`; diff --git a/test/client_cli/en/__snapshots__/config-manager-push-custom-nodes.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-push-custom-nodes.test.js.snap new file mode 100644 index 000000000..c4d72707e --- /dev/null +++ b/test/client_cli/en/__snapshots__/config-manager-push-custom-nodes.test.js.snap @@ -0,0 +1,30 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CLI help interface for 'config-manager push custom-nodes' should be expected english 1`] = ` +"Usage: frodo config-manager push custom-nodes [options] [host] [realm] [username] [password] + +[Experimental] Export custom nodes. + +Arguments: + host AM base URL, e.g.: + https://cdk.iam.example.com/am. To use a + connection profile, just specify a unique + substring or alias. + realm Realm. Specify realm as '/' for the root realm or + 'realm' or '/parent/child' otherwise. (default: + "alpha" for Identity Cloud tenants, "/" + otherwise.) + username Username to login with. Must be an admin user + with appropriate rights to manage authentication + journeys/trees. + password Password. + +Options: + -n, --node-name Custom node display name. If specified, only one + custom node is exported. + -h, --help Help + -hh, --help-more Help with all options. + -hhh, --help-all Help with all options, environment variables, and + usage examples. +" +`; diff --git a/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap b/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap index 0bba29ad7..9b6a3d688 100644 --- a/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap +++ b/test/client_cli/en/__snapshots__/config-manager-push.test.js.snap @@ -16,6 +16,7 @@ Commands: access-config [Experimental] Import access configuration. audit [Experimental] Import audit configuration. cookie-domains [Experimental] Import cookie domains. + custom-nodes [Experimental] Export custom nodes. email-provider [Experimental] Import email provider configuration. email-templates [Experimental] Import email template objects. endpoints [Experimental] Import custom endpoints objects. diff --git a/test/client_cli/en/config-manager-pull-custom-nodes.test.js b/test/client_cli/en/config-manager-pull-custom-nodes.test.js new file mode 100644 index 000000000..a9f4fdaaa --- /dev/null +++ b/test/client_cli/en/config-manager-pull-custom-nodes.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo config-manager pull custom-nodes --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'config-manager pull custom-nodes' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); \ No newline at end of file diff --git a/test/client_cli/en/config-manager-push-custom-nodes.test.js b/test/client_cli/en/config-manager-push-custom-nodes.test.js new file mode 100644 index 000000000..b9750c411 --- /dev/null +++ b/test/client_cli/en/config-manager-push-custom-nodes.test.js @@ -0,0 +1,10 @@ +import cp from 'child_process'; +import { promisify } from 'util'; + +const exec = promisify(cp.exec); +const CMD = 'frodo config-manager push custom-nodes --help'; +const { stdout } = await exec(CMD); + +test("CLI help interface for 'config-manager push custom-nodes' should be expected english", async () => { + expect(stdout).toMatchSnapshot(); +}); diff --git a/test/e2e/__snapshots__/config-manager-pull-custom-nodes.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-pull-custom-nodes.e2e.test.js.snap new file mode 100644 index 000000000..612368810 --- /dev/null +++ b/test/e2e/__snapshots__/config-manager-pull-custom-nodes.e2e.test.js.snap @@ -0,0 +1,1668 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style. 1`] = `0`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style. 2`] = `""`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/ALU/ALU.js 1`] = ` +"var SCRIPT_OUTCOMES = { + SUCCESS: 'Success' +}; + +var OPERATORS = { + ADD: "ADD", + SUBTRACT: "SUBTRACT", + MULTIPLY: "MULTIPLY", + DIVIDE: "DIVIDE" +} + +function main() { + var a = Number(properties.a); + var b = Number(properties.b); + switch (properties.operator) { + case OPERATORS.ADD: + nodeState.putShared("z", a + b); + break; + case OPERATORS.SUBTRACT: + nodeState.putShared("z", a - b); + break; + case OPERATORS.MULTIPLY: + nodeState.putShared("z", a * b); + break; + case OPERATORS.DIVIDE: + if (b == 0) throw new Error("Cannot divide by 0"); + nodeState.putShared("z", a / b); + break; + default: throw new Error("Unknown operator."); + } + action.goTo(SCRIPT_OUTCOMES.SUCCESS); +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/ALU/ALU.json 1`] = ` +{ + "_id": "c6063fb2f5dc42dd9772bedc93898bd8-1", + "description": "Simple ALU that performs basic binary math operations. Expects an "x" and "y" value on the shared state, and will produce a new "z" value on the shared state as output.", + "displayName": "ALU", + "errorOutcome": true, + "inputs": [ + "x", + "y", + ], + "outcomes": [ + "Success", + ], + "outputs": [ + "z", + ], + "properties": { + "operator": { + "defaultValue": "ADD", + "description": "The operation to perform.", + "multivalued": false, + "options": { + "ADD": "+", + "DIVIDE": "/", + "MULTIPLY": "*", + "SUBTRACT": "-", + }, + "required": true, + "title": "Operator", + "type": "STRING", + }, + }, + "script": { + "file": "ALU.js", + }, + "serviceName": "c6063fb2f5dc42dd9772bedc93898bd8", + "tags": [ + "math", + "utilities", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Display Callback/Display Callback.js 1`] = ` +"var SCRIPT_OUTCOMES = { + OUTCOME: 'outcome' +}; + +var CALLBACKS = { + BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK", + CHOICE_CALLBACK: "CHOICE_CALLBACK", + CONFIRMATION_CALLBACK: "CONFIRMATION_CALLBACK", + CONSENT_MAPPING_CALLBACK: "CONSENT_MAPPING_CALLBACK", + DEVICE_PROFILE_CALLBACK: "DEVICE_PROFILE_CALLBACK", + HIDDEN_VALUE_CALLBACK: "HIDDEN_VALUE_CALLBACK", + HTTP_CALLBACK: "HTTP_CALLBACK", + IDP_CALLBACK: "IDP_CALLBACK", + KBA_CREATE_CALLBACK: "KBA_CREATE_CALLBACK", + LANGUAGE_CALLBACK: "LANGUAGE_CALLBACK", + METADATA_CALLBACK: "METADATA_CALLBACK", + NAME_CALLBACK: "NAME_CALLBACK", + NUMBER_ATTRIBUTE_INPUT_CALLBACK: "NUMBER_ATTRIBUTE_INPUT_CALLBACK", + PASSWORD_CALLBACK: "PASSWORD_CALLBACK", + POLLING_WAIT_CALLBACK: "POLLING_WAIT_CALLBACK", + REDIRECT_CALLBACK: "REDIRECT_CALLBACK", + SCRIPT_TEXT_OUTPUT_CALLBACK: "SCRIPT_TEXT_OUTPUT_CALLBACK", + SELECT_IDP_CALLBACK: "SELECT_IDP_CALLBACK", + STRING_ATTRIBUTE_INPUT_CALLBACK: "STRING_ATTRIBUTE_INPUT_CALLBACK", + SUSPENDED_TEXT_OUTPUT_CALLBACK: "SUSPENDED_TEXT_OUTPUT_CALLBACK", + TERMS_AND_CONDITIONS_CALLBACK: "TERMS_AND_CONDITIONS_CALLBACK", + TEXT_INPUT_CALLBACK: "TEXT_INPUT_CALLBACK", + TEXT_OUTPUT_CALLBACK: "TEXT_OUTPUT_CALLBACK", + VALIDATED_PASSWORD_CALLBACK: "VALIDATED_PASSWORD_CALLBACK", + VALIDATED_USERNAME_CALLBACK: "VALIDATED_USERNAME_CALLBACK", + X509_CERTIFICATE_CALLBACK: "X509_CERTIFICATE_CALLBACK" +} + +function isStringPresent(value) { + return value; +} + +function getString(value) { + return value || ''; +} + +function isArrayPresent(value) { + return value; +} + +function getArray(value) { + return value ? JSON.parse(value) : []; +} + +function isObjectPresent(value) { + return value; +} + +function getObject(value) { + return value ? JSON.parse(value) : {}; +} + +function isIntPresent(value) { + return value; +} + +function getInt(value) { + return value ? parseInt(value) : 0; +} + +function isDoublePresent(value) { + return value; +} + +function getDouble(value) { + return value ? parseFloat(value) : 0.0; +} + +function isBooleanPresent(value) { + return value; +} + +function getBoolean(value) { + return value ? value.toLowerCase() === 'true' : false; +} + +function setProperty(value) { + if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value); + if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value); + if (properties.objectSharedProperty) { + var attributes = {}; + attributes[properties.objectSharedProperty] = value; + nodeState.mergeShared({ + objectAttributes: attributes + }); + } + if (properties.objectTransientProperty) { + var attributes = {}; + attributes[properties.objectTransientProperty] = value; + nodeState.mergeTransient({ + objectAttributes: attributes + }); + } +} + +function booleanAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getBoolean(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required); + } +} + +function choiceCallback() { + var prompt = getString(properties.options.prompt); + var choices = getArray(properties.options.choices); + var defaultChoice = getInt(properties.options.defaultChoice); + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed); +} + +function confirmationCallback() { + var prompt = getString(properties.options.prompt); + var messageType = getInt(properties.options.messageType); + var options = getArray(properties.options.options); + var optionType = getInt(properties.options.optionType); + var defaultOption = getInt(properties.options.defaultOption); + if (isStringPresent(properties.options.prompt)) { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption); + } + } else { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(messageType, options, defaultOption); + } + } +} + +function consentMappingCallback() { + var config = getObject(properties.options.config); + var message = getString(properties.options.message); + var isRequired = getBoolean(properties.options.isRequired); + var name = getString(properties.options.name); + var displayName = getString(properties.options.displayName); + var icon = getString(properties.options.icon); + var accessLevel = getString(properties.options.accessLevel); + var titles = getArray(properties.options.titles); + if (isObjectPresent(properties.options.prompt)) { + callbacksBuilder.consentMappingCallback(config, message, isRequired); + } else { + callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired); + } +} + +function deviceProfileCallback() { + var metadata = getBoolean(properties.options.metadata); + var location = getBoolean(properties.options.location); + var message = getString(properties.options.message); + callbacksBuilder.deviceProfileCallback(metadata, location, message); +} + +function hiddenValueCallback() { + var id = getString(properties.options.id); + var value = getString(properties.options.value); + callbacksBuilder.hiddenValueCallback(id, value); +} + +function httpCallback() { + var authorizationHeader = getString(properties.options.authorizationHeader); + var negotiationHeader = getString(properties.options.negotiationHeader); + var authRHeader = getString(properties.options.authRHeader); + var negoName = getString(properties.options.negoName); + var negoValue = getString(properties.options.negoValue); + if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) { + var errorCode = getString(properties.options.errorCode); + callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode); + } else { + var errorCode = getInt(properties.options.errorCode); + callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode); + } +} + +function idPCallback() { + var provider = getString(properties.options.provider); + var clientId = getString(properties.options.clientId); + var redirectUri = getString(properties.options.redirectUri); + var scope = getArray(properties.options.scope); + var nonce = getString(properties.options.nonce); + var request = getString(properties.options.request); + var requestUri = getString(properties.options.requestUri); + var acrValues = getArray(properties.options.acrValues); + var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo); + var token = getString(properties.options.token); + var tokenType = getString(properties.options.tokenType); + if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType); + } else { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo); + } +} + +function kbaCreateCallback() { + var prompt = getString(properties.options.prompt); + var predefinedQuestions = getArray(properties.options.predefinedQuestions); + var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions); + callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions); +} + +function languageCallback() { + var language = getString(properties.options.language); + var country = getString(properties.options.country); + callbacksBuilder.languageCallback(language, country); +} + +function metadataCallback() { + var outputValue = getObject(properties.options.outputValue); + callbacksBuilder.metadataCallback(outputValue); +} + +function nameCallback() { + var prompt = getString(properties.options.prompt); + var defaultName = getString(properties.options.defaultName); + if (isStringPresent(properties.options.defaultName)) { + callbacksBuilder.nameCallback(prompt, defaultName); + } else { + callbacksBuilder.nameCallback(prompt); + } +} + +function numberAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getDouble(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required); + } +} + +function passwordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + callbacksBuilder.passwordCallback(prompt, echoOn); +} + +function pollingWaitCallback() { + var waitTime = getString(properties.options.waitTime); + var message = getString(properties.options.message); + callbacksBuilder.pollingWaitCallback(waitTime, message); +} + +function redirectCallback() { + throw new Error('Not Implemented'); +} + +function scriptTextOutputCallback() { + var message = getString(properties.options.message); + callbacksBuilder.scriptTextOutputCallback(message); +} + +function selectIdPCallback() { + var providers = getObject(properties.options.providers); + callbacksBuilder.selectIdPCallback(providers); +} + +function stringAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getString(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required); + } +} + +function suspendedTextOutputCallback() { + var messageType = getInt(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.suspendedTextOutputCallback(messageType, message); +} + +function termsAndConditionsCallback() { + var version = getString(properties.options.version); + var terms = getString(properties.options.terms); + var createDate = getString(properties.options.createDate); + callbacksBuilder.termsAndConditionsCallback(version, terms, createDate); +} + +function textInputCallback() { + var prompt = getString(properties.options.prompt); + var defaultText = getString(properties.options.defaultText); + if (isStringPresent(properties.options.defaultText)) { + callbacksBuilder.textInputCallback(prompt, defaultText); + } else { + callbacksBuilder.textInputCallback(prompt); + } +} + +function textOutputCallback() { + var messageType = getString(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.textOutputCallback(messageType, message); +} + +function validatedPasswordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly); + } +} + +function validatedUsernameCallback() { + var prompt = getString(properties.options.prompt); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly); + } +} + +function x509CertificateCallback() { + throw new Error('Not Implemented'); +} + +function getBooleanAttributeInputCallback() { + setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0)); +} + +function getChoiceCallback() { + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + var selections = callbacks.getChoiceCallbacks().get(0); + setProperty(multipleSelectionsAllowed ? selections : selections[0]); +} + +function getConfirmationCallback() { + setProperty(callbacks.getConfirmationCallbacks().get(0)); +} + +function getConsentMappingCallback() { + setProperty(callbacks.getConsentMappingCallbacks().get(0)); +} + +function getDeviceProfileCallback() { + setProperty(callbacks.getDeviceProfileCallbacks().get(0)); +} + +function getHiddenValueCallback() { + var id = getString(properties.options.id); + setProperty(callbacks.getHiddenValueCallbacks().get(id)); +} + +function getHttpCallback() { + setProperty(callbacks.getHttpCallbacks().get(0)); +} + +function getIdPCallback() { + setProperty(callbacks.getIdpCallbacks().get(0)); +} + +function getKbaCreateCallback() { + setProperty(callbacks.getKbaCreateCallbacks().get(0)); +} + +function getLanguageCallback() { + setProperty(callbacks.getLanguageCallbacks().get(0)); +} + +function getNameCallback() { + setProperty(callbacks.getNameCallbacks().get(0)); +} + +function getNumberAttributeInputCallback() { + setProperty(callbacks.getNumberAttributeInputCallbacks().get(0)); +} + +function getPasswordCallback() { + setProperty(callbacks.getPasswordCallbacks().get(0)); +} + +function getSelectIdPCallback() { + setProperty(callbacks.getSelectIdPCallbacks().get(0)); +} + +function getStringAttributeInputCallback() { + setProperty(callbacks.getStringAttributeInputCallbacks().get(0)); +} + +function getTermsAndConditionsCallback() { + setProperty(callbacks.getTermsAndConditionsCallbacks().get(0)); +} + +function getTextInputCallback() { + setProperty(callbacks.getTextInputCallbacks().get(0)); +} + +function getValidatedPasswordCallback() { + setProperty(callbacks.getValidatedPasswordCallbacks().get(0)); +} + +function getValidatedUsernameCallback() { + setProperty(callbacks.getValidatedUsernameCallbacks().get(0)); +} + +function getX509CertificateCallback() { + setProperty(callbacks.getX509CertificateCallbacks().get(0)); +} + +function main() { + if (!callbacks.isEmpty()) { + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break; + case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break; + case CALLBACKS.NAME_CALLBACK: getNameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break; + default: break; + } + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: httpCallback(); break; + case CALLBACKS.IDP_CALLBACK: idPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break; + case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break; + case CALLBACKS.NAME_CALLBACK: nameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break; + case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break; + case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break; + case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break; + case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break; + case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break; + default: throw new Error('Unknown Callback'); // Should never reach this case + } +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Display Callback/Display Callback.json 1`] = ` +{ + "_id": "ef81b1a52c914710b3388caebfe7233a-1", + "description": "Displays custom callback to the page", + "displayName": "Display Callback", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "callback": { + "description": "The callback to display", + "multivalued": false, + "options": { + "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK": "booleanAttributeInputCallback", + "CHOICE_CALLBACK": "choiceCallback", + "CONFIRMATION_CALLBACK": "confirmationCallback", + "CONSENT_MAPPING_CALLBACK": "consentMappingCallback", + "DEVICE_PROFILE_CALLBACK": "deviceProfileCallback", + "HIDDEN_VALUE_CALLBACK": "hiddenValueCallback", + "HTTP_CALLBACK": "httpCallback", + "IDP_CALLBACK": "idPCallback", + "KBA_CREATE_CALLBACK": "kbaCreateCallback", + "LANGUAGE_CALLBACK": "languageCallback", + "METADATA_CALLBACK": "metadataCallback", + "NAME_CALLBACK": "nameCallback", + "NUMBER_ATTRIBUTE_INPUT_CALLBACK": "numberAttributeInputCallback", + "PASSWORD_CALLBACK": "passwordCallback", + "POLLING_WAIT_CALLBACK": "pollingWaitCallback", + "REDIRECT_CALLBACK": "redirectCallback", + "SCRIPT_TEXT_OUTPUT_CALLBACK": "scriptTextOutputCallback", + "SELECT_IDP_CALLBACK": "selectIdPCallback", + "STRING_ATTRIBUTE_INPUT_CALLBACK": "stringAttributeInputCallback", + "SUSPENDED_TEXT_OUTPUT_CALLBACK": "suspendedTextOutputCallback", + "TERMS_AND_CONDITIONS_CALLBACK": "termsAndConditionsCallback", + "TEXT_INPUT_CALLBACK": "textInputCallback", + "TEXT_OUTPUT_CALLBACK": "textOutputCallback", + "VALIDATED_PASSWORD_CALLBACK": "validatedPasswordCallback", + "VALIDATED_USERNAME_CALLBACK": "validatedUsernameCallback", + "X509_CERTIFICATE_CALLBACK": "x509CertificateCallback", + }, + "required": true, + "title": "Callback", + "type": "STRING", + }, + "objectSharedProperty": { + "description": "The objectAttributes property on the shared state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Shared Property", + "type": "STRING", + }, + "objectTransientProperty": { + "description": "The objectAttributes property on the transient state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Transient Property", + "type": "STRING", + }, + "options": { + "description": "The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). + +For example, for textOutputCallback, the options could be: { messageType: 0, message: "Hello World!" }. + +Note that for required parameters that are not specified in the options will use default values based on the type of the parameter ("" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).", + "multivalued": false, + "required": true, + "title": "Options", + "type": "OBJECT", + }, + "sharedProperty": { + "description": "The shared state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Shared State Property", + "type": "STRING", + }, + "transientProperty": { + "description": "The transient state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Transient State Property", + "type": "STRING", + }, + }, + "script": { + "file": "Display Callback.js", + }, + "serviceName": "ef81b1a52c914710b3388caebfe7233a", + "tags": [ + "callback", + "utilities", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Display State/Display State.js 1`] = ` +"var SCRIPT_OUTCOMES = { + OUTCOME: "outcome" +}; + +function main() { + if (!callbacks.isEmpty()) { + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + var keySet = nodeState.keys(); // Java Set + var keys = Array.from(keySet); // Make it into JavaScript array + debugState = {}; + for (var i in keys) { + var k = new String(keys[i]); + var item = nodeState.get(k); + if (typeof item === "object") { + debugState[k] = nodeState.getObject(k); + } else { + debugState[k] = nodeState.get(k); + } + } + if (properties.displayFormat === "JSON") { + callbacksBuilder.textOutputCallback(0, \`
\${JSON.stringify(debugState, null, 2)}
\`); + return; + } + callbacksBuilder.textOutputCallback(0, \`\${Array.from(Object.keys(debugState).map(k => \`\`))}
KeyValue
\${k}
\${debugState[k]}
\`); +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Display State/Display State.json 1`] = ` +{ + "_id": "8ab9f1aad4b4460a9c45d15fb148e221-1", + "description": "Debug node that displays the shared and transient state of the journey for debugging purposes.", + "displayName": "Display State", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "displayFormat": { + "defaultValue": "TABLE", + "description": "The format in which to display the states.", + "multivalued": false, + "options": { + "JSON": "Raw JSON", + "TABLE": "HTML Table", + }, + "required": true, + "title": "Display Format", + "type": "STRING", + }, + }, + "script": { + "file": "Display State.js", + }, + "serviceName": "8ab9f1aad4b4460a9c45d15fb148e221", + "tags": [ + "debug", + "testing", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Generate JWT/Generate JWT.js 1`] = ` +"var aud = properties.audience; +var iss = properties.issuer; +var validity = properties.validity; +var esv = properties.signingkey; + +var signingkey = systemEnv.getProperty(esv); + +var username = nodeState.get("username"); + +var data = { + jwtType:"SIGNED", + jwsAlgorithm: "HS256", + issuer: iss, + subject: username, + audience: aud, + type: "JWT", + validityMinutes: validity, + signingKey: signingkey +}; + +var jwt = jwtAssertion.generateJwt(data); + +if (jwt !== null && jwt.length > 0) { + nodeState.putShared("assertionJwt" , jwt); + action.goTo("True"); +} else { + action.goTo("False"); +} +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Generate JWT/Generate JWT.json 1`] = ` +{ + "_id": "e5ad0110c8ee4dafaae983003cd05d4a-1", + "description": "Generate a signed JWT using the HMAC SHA-256 algorithm.", + "displayName": "Generate JWT", + "errorOutcome": true, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": { + "audience": { + "description": "The audience (aud) claim", + "multivalued": false, + "required": true, + "title": "Audience", + "type": "STRING", + }, + "issuer": { + "description": "The issuer (iss) claim", + "multivalued": false, + "required": true, + "title": "Issuer", + "type": "STRING", + }, + "signingkey": { + "defaultValue": "esv.signing.key", + "description": "The secret label for the HMAC signing key", + "multivalued": false, + "required": true, + "title": "HMAC Signing Key", + "type": "STRING", + }, + "validity": { + "defaultValue": 5, + "description": "", + "multivalued": false, + "required": true, + "title": "Validity (minutes)", + "type": "NUMBER", + }, + }, + "script": { + "file": "Generate JWT.js", + }, + "serviceName": "e5ad0110c8ee4dafaae983003cd05d4a", + "tags": [ + "Utilities", + "utilities", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Has Session AM/Has Session AM.js 1`] = ` +"var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Has Session AM/Has Session AM.json 1`] = ` +{ + "_id": "session-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session AM", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": {}, + "script": { + "file": "Has Session AM.js", + }, + "serviceName": "session", + "tags": [ + "utilities", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Has Session/Has Session.js 1`] = ` +"var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Has Session/Has Session.json 1`] = ` +{ + "_id": "c605506774a848f7877b4d17a453bd39-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False", + ], + "outputs": [], + "properties": {}, + "script": { + "file": "Has Session.js", + }, + "serviceName": "c605506774a848f7877b4d17a453bd39", + "tags": [ + "utilities", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Vector ALU/Vector ALU.js 1`] = ` +"var SCRIPT_OUTCOMES = { + SUCCESS: 'Success' +}; + +var OPERATORS = { + ADD: "ADD", + SUBTRACT: "SUBTRACT", + DOT: "DOT", + CROSS: "CROSS" +} + +function add(a, b) { + return a.map((v, i) => v + b[i]); +} + +function subtract(a, b) { + return a.map((v, i) => v - b[i]); +} + +function dot(a, b) { + return a.reduce((sum, v, i) => sum + v * b[i], 0); +} + +function cross(a, b) { + return [ + a[1] * b[2] - a[2] * b[1], + a[2] * b[0] - a[0] * b[2], + a[0] * b[1] - a[1] * b[0] + ]; +} + +function main() { + if (properties.a.length !== properties.b.length) throw new Error("Vectors not the same dimension."); + switch (properties.operator) { + case OPERATORS.ADD: + nodeState.putShared("c", add(properties.a, properties.b)); + break; + case OPERATORS.SUBTRACT: + nodeState.putShared("c", subtract(properties.a, properties.b)); + break; + case OPERATORS.DOT: + nodeState.putShared("c", dot(properties.a, properties.b)); + break; + case OPERATORS.CROSS: + if (properties.a.length !== 3) throw new Error("Vectors not dimension 3 for cross product"); + nodeState.putShared("c", cross(properties.a, properties.b)); + break; + default: throw new Error("Unknown operator."); + } + action.goTo(SCRIPT_OUTCOMES.SUCCESS); +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.: configManagerPullCustomNodesDir0/custom-nodes/nodes/Vector ALU/Vector ALU.json 1`] = ` +{ + "_id": "c15e2efb3deb4d4ea338c74a6440b69f-1", + "description": "Simple ALU that performs basic binary vector math operations. Outputs the result onto the shared state with key "c".", + "displayName": "Vector ALU", + "errorOutcome": true, + "inputs": [], + "outcomes": [ + "Success", + ], + "outputs": [ + "c", + ], + "properties": { + "a": { + "defaultValue": [ + 1, + 2, + 3, + ], + "description": "Left vector operand", + "multivalued": true, + "required": true, + "title": "A", + "type": "NUMBER", + }, + "b": { + "defaultValue": [ + 4, + 5, + 6, + ], + "description": "Right vector operand", + "multivalued": true, + "required": true, + "title": "B", + "type": "NUMBER", + }, + "operator": { + "defaultValue": "DOT", + "description": "The binary operation to perform on the vectors.", + "multivalued": false, + "options": { + "ADD": "+", + "CROSS": "X", + "DOT": ".", + "SUBTRACT": "-", + }, + "required": true, + "title": "Operator", + "type": "STRING", + }, + }, + "script": { + "file": "Vector ALU.js", + }, + "serviceName": "c15e2efb3deb4d4ea338c74a6440b69f", + "tags": [ + "math", + "vector", + "utilities", + ], +} +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir1 -n 'Display Callback' -m forgeops": should export custom node named: Display Callback 1`] = `0`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir1 -n 'Display Callback' -m forgeops": should export custom node named: Display Callback 2`] = `""`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir1 -n 'Display Callback' -m forgeops": should export custom node named: Display Callback: configManagerPullCustomNodesDir1/custom-nodes/nodes/Display Callback/Display Callback.js 1`] = ` +"var SCRIPT_OUTCOMES = { + OUTCOME: 'outcome' +}; + +var CALLBACKS = { + BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK", + CHOICE_CALLBACK: "CHOICE_CALLBACK", + CONFIRMATION_CALLBACK: "CONFIRMATION_CALLBACK", + CONSENT_MAPPING_CALLBACK: "CONSENT_MAPPING_CALLBACK", + DEVICE_PROFILE_CALLBACK: "DEVICE_PROFILE_CALLBACK", + HIDDEN_VALUE_CALLBACK: "HIDDEN_VALUE_CALLBACK", + HTTP_CALLBACK: "HTTP_CALLBACK", + IDP_CALLBACK: "IDP_CALLBACK", + KBA_CREATE_CALLBACK: "KBA_CREATE_CALLBACK", + LANGUAGE_CALLBACK: "LANGUAGE_CALLBACK", + METADATA_CALLBACK: "METADATA_CALLBACK", + NAME_CALLBACK: "NAME_CALLBACK", + NUMBER_ATTRIBUTE_INPUT_CALLBACK: "NUMBER_ATTRIBUTE_INPUT_CALLBACK", + PASSWORD_CALLBACK: "PASSWORD_CALLBACK", + POLLING_WAIT_CALLBACK: "POLLING_WAIT_CALLBACK", + REDIRECT_CALLBACK: "REDIRECT_CALLBACK", + SCRIPT_TEXT_OUTPUT_CALLBACK: "SCRIPT_TEXT_OUTPUT_CALLBACK", + SELECT_IDP_CALLBACK: "SELECT_IDP_CALLBACK", + STRING_ATTRIBUTE_INPUT_CALLBACK: "STRING_ATTRIBUTE_INPUT_CALLBACK", + SUSPENDED_TEXT_OUTPUT_CALLBACK: "SUSPENDED_TEXT_OUTPUT_CALLBACK", + TERMS_AND_CONDITIONS_CALLBACK: "TERMS_AND_CONDITIONS_CALLBACK", + TEXT_INPUT_CALLBACK: "TEXT_INPUT_CALLBACK", + TEXT_OUTPUT_CALLBACK: "TEXT_OUTPUT_CALLBACK", + VALIDATED_PASSWORD_CALLBACK: "VALIDATED_PASSWORD_CALLBACK", + VALIDATED_USERNAME_CALLBACK: "VALIDATED_USERNAME_CALLBACK", + X509_CERTIFICATE_CALLBACK: "X509_CERTIFICATE_CALLBACK" +} + +function isStringPresent(value) { + return value; +} + +function getString(value) { + return value || ''; +} + +function isArrayPresent(value) { + return value; +} + +function getArray(value) { + return value ? JSON.parse(value) : []; +} + +function isObjectPresent(value) { + return value; +} + +function getObject(value) { + return value ? JSON.parse(value) : {}; +} + +function isIntPresent(value) { + return value; +} + +function getInt(value) { + return value ? parseInt(value) : 0; +} + +function isDoublePresent(value) { + return value; +} + +function getDouble(value) { + return value ? parseFloat(value) : 0.0; +} + +function isBooleanPresent(value) { + return value; +} + +function getBoolean(value) { + return value ? value.toLowerCase() === 'true' : false; +} + +function setProperty(value) { + if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value); + if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value); + if (properties.objectSharedProperty) { + var attributes = {}; + attributes[properties.objectSharedProperty] = value; + nodeState.mergeShared({ + objectAttributes: attributes + }); + } + if (properties.objectTransientProperty) { + var attributes = {}; + attributes[properties.objectTransientProperty] = value; + nodeState.mergeTransient({ + objectAttributes: attributes + }); + } +} + +function booleanAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getBoolean(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required); + } +} + +function choiceCallback() { + var prompt = getString(properties.options.prompt); + var choices = getArray(properties.options.choices); + var defaultChoice = getInt(properties.options.defaultChoice); + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed); +} + +function confirmationCallback() { + var prompt = getString(properties.options.prompt); + var messageType = getInt(properties.options.messageType); + var options = getArray(properties.options.options); + var optionType = getInt(properties.options.optionType); + var defaultOption = getInt(properties.options.defaultOption); + if (isStringPresent(properties.options.prompt)) { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption); + } + } else { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(messageType, options, defaultOption); + } + } +} + +function consentMappingCallback() { + var config = getObject(properties.options.config); + var message = getString(properties.options.message); + var isRequired = getBoolean(properties.options.isRequired); + var name = getString(properties.options.name); + var displayName = getString(properties.options.displayName); + var icon = getString(properties.options.icon); + var accessLevel = getString(properties.options.accessLevel); + var titles = getArray(properties.options.titles); + if (isObjectPresent(properties.options.prompt)) { + callbacksBuilder.consentMappingCallback(config, message, isRequired); + } else { + callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired); + } +} + +function deviceProfileCallback() { + var metadata = getBoolean(properties.options.metadata); + var location = getBoolean(properties.options.location); + var message = getString(properties.options.message); + callbacksBuilder.deviceProfileCallback(metadata, location, message); +} + +function hiddenValueCallback() { + var id = getString(properties.options.id); + var value = getString(properties.options.value); + callbacksBuilder.hiddenValueCallback(id, value); +} + +function httpCallback() { + var authorizationHeader = getString(properties.options.authorizationHeader); + var negotiationHeader = getString(properties.options.negotiationHeader); + var authRHeader = getString(properties.options.authRHeader); + var negoName = getString(properties.options.negoName); + var negoValue = getString(properties.options.negoValue); + if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) { + var errorCode = getString(properties.options.errorCode); + callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode); + } else { + var errorCode = getInt(properties.options.errorCode); + callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode); + } +} + +function idPCallback() { + var provider = getString(properties.options.provider); + var clientId = getString(properties.options.clientId); + var redirectUri = getString(properties.options.redirectUri); + var scope = getArray(properties.options.scope); + var nonce = getString(properties.options.nonce); + var request = getString(properties.options.request); + var requestUri = getString(properties.options.requestUri); + var acrValues = getArray(properties.options.acrValues); + var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo); + var token = getString(properties.options.token); + var tokenType = getString(properties.options.tokenType); + if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType); + } else { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo); + } +} + +function kbaCreateCallback() { + var prompt = getString(properties.options.prompt); + var predefinedQuestions = getArray(properties.options.predefinedQuestions); + var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions); + callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions); +} + +function languageCallback() { + var language = getString(properties.options.language); + var country = getString(properties.options.country); + callbacksBuilder.languageCallback(language, country); +} + +function metadataCallback() { + var outputValue = getObject(properties.options.outputValue); + callbacksBuilder.metadataCallback(outputValue); +} + +function nameCallback() { + var prompt = getString(properties.options.prompt); + var defaultName = getString(properties.options.defaultName); + if (isStringPresent(properties.options.defaultName)) { + callbacksBuilder.nameCallback(prompt, defaultName); + } else { + callbacksBuilder.nameCallback(prompt); + } +} + +function numberAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getDouble(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required); + } +} + +function passwordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + callbacksBuilder.passwordCallback(prompt, echoOn); +} + +function pollingWaitCallback() { + var waitTime = getString(properties.options.waitTime); + var message = getString(properties.options.message); + callbacksBuilder.pollingWaitCallback(waitTime, message); +} + +function redirectCallback() { + throw new Error('Not Implemented'); +} + +function scriptTextOutputCallback() { + var message = getString(properties.options.message); + callbacksBuilder.scriptTextOutputCallback(message); +} + +function selectIdPCallback() { + var providers = getObject(properties.options.providers); + callbacksBuilder.selectIdPCallback(providers); +} + +function stringAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getString(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required); + } +} + +function suspendedTextOutputCallback() { + var messageType = getInt(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.suspendedTextOutputCallback(messageType, message); +} + +function termsAndConditionsCallback() { + var version = getString(properties.options.version); + var terms = getString(properties.options.terms); + var createDate = getString(properties.options.createDate); + callbacksBuilder.termsAndConditionsCallback(version, terms, createDate); +} + +function textInputCallback() { + var prompt = getString(properties.options.prompt); + var defaultText = getString(properties.options.defaultText); + if (isStringPresent(properties.options.defaultText)) { + callbacksBuilder.textInputCallback(prompt, defaultText); + } else { + callbacksBuilder.textInputCallback(prompt); + } +} + +function textOutputCallback() { + var messageType = getString(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.textOutputCallback(messageType, message); +} + +function validatedPasswordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly); + } +} + +function validatedUsernameCallback() { + var prompt = getString(properties.options.prompt); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly); + } +} + +function x509CertificateCallback() { + throw new Error('Not Implemented'); +} + +function getBooleanAttributeInputCallback() { + setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0)); +} + +function getChoiceCallback() { + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + var selections = callbacks.getChoiceCallbacks().get(0); + setProperty(multipleSelectionsAllowed ? selections : selections[0]); +} + +function getConfirmationCallback() { + setProperty(callbacks.getConfirmationCallbacks().get(0)); +} + +function getConsentMappingCallback() { + setProperty(callbacks.getConsentMappingCallbacks().get(0)); +} + +function getDeviceProfileCallback() { + setProperty(callbacks.getDeviceProfileCallbacks().get(0)); +} + +function getHiddenValueCallback() { + var id = getString(properties.options.id); + setProperty(callbacks.getHiddenValueCallbacks().get(id)); +} + +function getHttpCallback() { + setProperty(callbacks.getHttpCallbacks().get(0)); +} + +function getIdPCallback() { + setProperty(callbacks.getIdpCallbacks().get(0)); +} + +function getKbaCreateCallback() { + setProperty(callbacks.getKbaCreateCallbacks().get(0)); +} + +function getLanguageCallback() { + setProperty(callbacks.getLanguageCallbacks().get(0)); +} + +function getNameCallback() { + setProperty(callbacks.getNameCallbacks().get(0)); +} + +function getNumberAttributeInputCallback() { + setProperty(callbacks.getNumberAttributeInputCallbacks().get(0)); +} + +function getPasswordCallback() { + setProperty(callbacks.getPasswordCallbacks().get(0)); +} + +function getSelectIdPCallback() { + setProperty(callbacks.getSelectIdPCallbacks().get(0)); +} + +function getStringAttributeInputCallback() { + setProperty(callbacks.getStringAttributeInputCallbacks().get(0)); +} + +function getTermsAndConditionsCallback() { + setProperty(callbacks.getTermsAndConditionsCallbacks().get(0)); +} + +function getTextInputCallback() { + setProperty(callbacks.getTextInputCallbacks().get(0)); +} + +function getValidatedPasswordCallback() { + setProperty(callbacks.getValidatedPasswordCallbacks().get(0)); +} + +function getValidatedUsernameCallback() { + setProperty(callbacks.getValidatedUsernameCallbacks().get(0)); +} + +function getX509CertificateCallback() { + setProperty(callbacks.getX509CertificateCallbacks().get(0)); +} + +function main() { + if (!callbacks.isEmpty()) { + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break; + case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break; + case CALLBACKS.NAME_CALLBACK: getNameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break; + default: break; + } + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: httpCallback(); break; + case CALLBACKS.IDP_CALLBACK: idPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break; + case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break; + case CALLBACKS.NAME_CALLBACK: nameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break; + case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break; + case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break; + case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break; + case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break; + case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break; + default: throw new Error('Unknown Callback'); // Should never reach this case + } +} + +main(); +" +`; + +exports[`frodo config-manager pull custom-nodes "frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir1 -n 'Display Callback' -m forgeops": should export custom node named: Display Callback: configManagerPullCustomNodesDir1/custom-nodes/nodes/Display Callback/Display Callback.json 1`] = ` +{ + "_id": "ef81b1a52c914710b3388caebfe7233a-1", + "description": "Displays custom callback to the page", + "displayName": "Display Callback", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome", + ], + "outputs": [], + "properties": { + "callback": { + "description": "The callback to display", + "multivalued": false, + "options": { + "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK": "booleanAttributeInputCallback", + "CHOICE_CALLBACK": "choiceCallback", + "CONFIRMATION_CALLBACK": "confirmationCallback", + "CONSENT_MAPPING_CALLBACK": "consentMappingCallback", + "DEVICE_PROFILE_CALLBACK": "deviceProfileCallback", + "HIDDEN_VALUE_CALLBACK": "hiddenValueCallback", + "HTTP_CALLBACK": "httpCallback", + "IDP_CALLBACK": "idPCallback", + "KBA_CREATE_CALLBACK": "kbaCreateCallback", + "LANGUAGE_CALLBACK": "languageCallback", + "METADATA_CALLBACK": "metadataCallback", + "NAME_CALLBACK": "nameCallback", + "NUMBER_ATTRIBUTE_INPUT_CALLBACK": "numberAttributeInputCallback", + "PASSWORD_CALLBACK": "passwordCallback", + "POLLING_WAIT_CALLBACK": "pollingWaitCallback", + "REDIRECT_CALLBACK": "redirectCallback", + "SCRIPT_TEXT_OUTPUT_CALLBACK": "scriptTextOutputCallback", + "SELECT_IDP_CALLBACK": "selectIdPCallback", + "STRING_ATTRIBUTE_INPUT_CALLBACK": "stringAttributeInputCallback", + "SUSPENDED_TEXT_OUTPUT_CALLBACK": "suspendedTextOutputCallback", + "TERMS_AND_CONDITIONS_CALLBACK": "termsAndConditionsCallback", + "TEXT_INPUT_CALLBACK": "textInputCallback", + "TEXT_OUTPUT_CALLBACK": "textOutputCallback", + "VALIDATED_PASSWORD_CALLBACK": "validatedPasswordCallback", + "VALIDATED_USERNAME_CALLBACK": "validatedUsernameCallback", + "X509_CERTIFICATE_CALLBACK": "x509CertificateCallback", + }, + "required": true, + "title": "Callback", + "type": "STRING", + }, + "objectSharedProperty": { + "description": "The objectAttributes property on the shared state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Shared Property", + "type": "STRING", + }, + "objectTransientProperty": { + "description": "The objectAttributes property on the transient state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Transient Property", + "type": "STRING", + }, + "options": { + "description": "The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). + +For example, for textOutputCallback, the options could be: { messageType: 0, message: "Hello World!" }. + +Note that for required parameters that are not specified in the options will use default values based on the type of the parameter ("" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).", + "multivalued": false, + "required": true, + "title": "Options", + "type": "OBJECT", + }, + "sharedProperty": { + "description": "The shared state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Shared State Property", + "type": "STRING", + }, + "transientProperty": { + "description": "The transient state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Transient State Property", + "type": "STRING", + }, + }, + "script": { + "file": "Display Callback.js", + }, + "serviceName": "ef81b1a52c914710b3388caebfe7233a", + "tags": [ + "callback", + "utilities", + ], +} +`; diff --git a/test/e2e/__snapshots__/config-manager-push-custom-nodes.e2e.test.js.snap b/test/e2e/__snapshots__/config-manager-push-custom-nodes.e2e.test.js.snap new file mode 100644 index 000000000..00f00759d --- /dev/null +++ b/test/e2e/__snapshots__/config-manager-push-custom-nodes.e2e.test.js.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`frodo config-manager push custom-nodes "frodo config-manager push custom-nodes -D test/e2e/exports/fr-config-manager/forgeops -m forgeops": should import the custom-nodes into forgeops" 1`] = `""`; + +exports[`frodo config-manager push custom-nodes "frodo config-manager push custom-nodes -n "Display Callback" -D test/e2e/exports/fr-config-manager/forgeops -m forgeops": should import a specific custom node by name into forgeops" 1`] = `""`; diff --git a/test/e2e/config-manager-pull-custom-nodes.e2e.test.js b/test/e2e/config-manager-pull-custom-nodes.e2e.test.js new file mode 100644 index 000000000..9ca8b5329 --- /dev/null +++ b/test/e2e/config-manager-pull-custom-nodes.e2e.test.js @@ -0,0 +1,71 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://nightly.gcp.forgeops.com/am frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://nightly.gcp.forgeops.com/am frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir1 -n 'Display Callback' -m forgeops +*/ + +import { getEnv, testExport } from './utils/TestUtils'; +import { forgeops_connection as fc } from './utils/TestConfig'; + +process.env['FRODO_MOCK'] = '1'; +const env = getEnv(fc); + +describe('frodo config-manager pull custom-nodes', () => { + test(`"frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir0 -m forgeops": should export all custom-nodes in fr-config manager style.`, async () => { + const dirName = 'configManagerPullCustomNodesDir0'; + const CMD = `frodo config-manager pull custom-nodes -D ${dirName} -m forgeops`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); + test(`"frodo config-manager pull custom-nodes -D configManagerPullCustomNodesDir1 -n 'Display Callback' -m forgeops": should export custom node named: Display Callback`, async () => { + const dirName = 'configManagerPullCustomNodesDir1'; + const CMD = `frodo config-manager pull custom-nodes -D ${dirName} -n 'Display Callback' -m forgeops`; + await testExport(CMD, env, undefined, undefined, dirName, false); + }); +}); \ No newline at end of file diff --git a/test/e2e/config-manager-push-custom-nodes.e2e.test.js b/test/e2e/config-manager-push-custom-nodes.e2e.test.js new file mode 100644 index 000000000..cf562357b --- /dev/null +++ b/test/e2e/config-manager-push-custom-nodes.e2e.test.js @@ -0,0 +1,78 @@ +/** + * Follow this process to write e2e tests for the CLI project: + * + * 1. Test if all the necessary mocks for your tests already exist. + * In mock mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=1 frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * If your command completes without errors and with the expected results, + * all the required mocks already exist and you are good to write your + * test and skip to step #4. + * + * If, however, your command fails and you see errors like the one below, + * you know you need to record the mock responses first: + * + * [Polly] [adapter:node-http] Recording for the following request is not found and `recordIfMissing` is `false`. + * + * 2. Record mock responses for your exact command. + * In mock record mode, run the command you want to test with the same arguments + * and parameters exactly as you want to test it, for example: + * + * $ FRODO_MOCK=record frodo conn save https://openam-frodo-dev.forgeblocks.com/am volker.scheuber@forgerock.com Sup3rS3cr3t! + * + * Wait until you see all the Polly instances (mock recording adapters) have + * shutdown before you try to run step #1 again. + * Messages like these indicate mock recording adapters shutting down: + * + * Polly instance 'conn/4' stopping in 3s... + * Polly instance 'conn/4' stopping in 2s... + * Polly instance 'conn/save/3' stopping in 3s... + * Polly instance 'conn/4' stopping in 1s... + * Polly instance 'conn/save/3' stopping in 2s... + * Polly instance 'conn/4' stopped. + * Polly instance 'conn/save/3' stopping in 1s... + * Polly instance 'conn/save/3' stopped. + * + * 3. Validate your freshly recorded mock responses are complete and working. + * Re-run the exact command you want to test in mock mode (see step #1). + * + * 4. Write your test. + * Make sure to use the exact command including number of arguments and params. + * + * 5. Commit both your test and your new recordings to the repository. + * Your tests are likely going to reside outside the frodo-lib project but + * the recordings must be committed to the frodo-lib project. + */ + +/* +// ForgeOps +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://nightly.gcp.forgeops.com/am frodo config-manager push custom-nodes -D test/e2e/exports/fr-config-manager/forgeops -m forgeops +FRODO_MOCK=record FRODO_NO_CACHE=1 FRODO_HOST=https://nightly.gcp.forgeops.com/am frodo config-manager push custom-nodes -n "Display Callback" -D test/e2e/exports/fr-config-manager/forgeops -m forgeops +*/ + +import cp from 'child_process'; +import { promisify } from 'util'; +import { getEnv, removeAnsiEscapeCodes } from './utils/TestUtils'; +import { forgeops_connection as fc } from './utils/TestConfig'; + +const exec = promisify(cp.exec); + +process.env['FRODO_MOCK'] = '1'; +const forgeopsEnv = getEnv(fc); + +const allDirectory = "test/e2e/exports/fr-config-manager/forgeops"; + +describe('frodo config-manager push custom-nodes', () => { + test(`"frodo config-manager push custom-nodes -D ${allDirectory} -m forgeops": should import the custom-nodes into forgeops"`, async () => { + const CMD = `frodo config-manager push custom-nodes -D ${allDirectory} -m forgeops`; + const { stdout } = await exec(CMD, forgeopsEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); + test(`"frodo config-manager push custom-nodes -n "Display Callback" -D ${allDirectory} -m forgeops": should import a specific custom node by name into forgeops"`, async () => { + const CMD = `frodo config-manager push custom-nodes -n "Display Callback" -D ${allDirectory} -m forgeops`; + const { stdout } = await exec(CMD, forgeopsEnv); + expect(removeAnsiEscapeCodes(stdout)).toMatchSnapshot(); + }); +}); \ No newline at end of file diff --git a/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Display Callback/Display Callback.js b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Display Callback/Display Callback.js new file mode 100644 index 000000000..6b682c6c1 --- /dev/null +++ b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Display Callback/Display Callback.js @@ -0,0 +1,511 @@ +var SCRIPT_OUTCOMES = { + OUTCOME: 'outcome' +}; + +var CALLBACKS = { + BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK", + CHOICE_CALLBACK: "CHOICE_CALLBACK", + CONFIRMATION_CALLBACK: "CONFIRMATION_CALLBACK", + CONSENT_MAPPING_CALLBACK: "CONSENT_MAPPING_CALLBACK", + DEVICE_PROFILE_CALLBACK: "DEVICE_PROFILE_CALLBACK", + HIDDEN_VALUE_CALLBACK: "HIDDEN_VALUE_CALLBACK", + HTTP_CALLBACK: "HTTP_CALLBACK", + IDP_CALLBACK: "IDP_CALLBACK", + KBA_CREATE_CALLBACK: "KBA_CREATE_CALLBACK", + LANGUAGE_CALLBACK: "LANGUAGE_CALLBACK", + METADATA_CALLBACK: "METADATA_CALLBACK", + NAME_CALLBACK: "NAME_CALLBACK", + NUMBER_ATTRIBUTE_INPUT_CALLBACK: "NUMBER_ATTRIBUTE_INPUT_CALLBACK", + PASSWORD_CALLBACK: "PASSWORD_CALLBACK", + POLLING_WAIT_CALLBACK: "POLLING_WAIT_CALLBACK", + REDIRECT_CALLBACK: "REDIRECT_CALLBACK", + SCRIPT_TEXT_OUTPUT_CALLBACK: "SCRIPT_TEXT_OUTPUT_CALLBACK", + SELECT_IDP_CALLBACK: "SELECT_IDP_CALLBACK", + STRING_ATTRIBUTE_INPUT_CALLBACK: "STRING_ATTRIBUTE_INPUT_CALLBACK", + SUSPENDED_TEXT_OUTPUT_CALLBACK: "SUSPENDED_TEXT_OUTPUT_CALLBACK", + TERMS_AND_CONDITIONS_CALLBACK: "TERMS_AND_CONDITIONS_CALLBACK", + TEXT_INPUT_CALLBACK: "TEXT_INPUT_CALLBACK", + TEXT_OUTPUT_CALLBACK: "TEXT_OUTPUT_CALLBACK", + VALIDATED_PASSWORD_CALLBACK: "VALIDATED_PASSWORD_CALLBACK", + VALIDATED_USERNAME_CALLBACK: "VALIDATED_USERNAME_CALLBACK", + X509_CERTIFICATE_CALLBACK: "X509_CERTIFICATE_CALLBACK" +} + +function isStringPresent(value) { + return value; +} + +function getString(value) { + return value || ''; +} + +function isArrayPresent(value) { + return value; +} + +function getArray(value) { + return value ? JSON.parse(value) : []; +} + +function isObjectPresent(value) { + return value; +} + +function getObject(value) { + return value ? JSON.parse(value) : {}; +} + +function isIntPresent(value) { + return value; +} + +function getInt(value) { + return value ? parseInt(value) : 0; +} + +function isDoublePresent(value) { + return value; +} + +function getDouble(value) { + return value ? parseFloat(value) : 0.0; +} + +function isBooleanPresent(value) { + return value; +} + +function getBoolean(value) { + return value ? value.toLowerCase() === 'true' : false; +} + +function setProperty(value) { + if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value); + if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value); + if (properties.objectSharedProperty) { + var attributes = {}; + attributes[properties.objectSharedProperty] = value; + nodeState.mergeShared({ + objectAttributes: attributes + }); + } + if (properties.objectTransientProperty) { + var attributes = {}; + attributes[properties.objectTransientProperty] = value; + nodeState.mergeTransient({ + objectAttributes: attributes + }); + } +} + +function booleanAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getBoolean(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required); + } +} + +function choiceCallback() { + var prompt = getString(properties.options.prompt); + var choices = getArray(properties.options.choices); + var defaultChoice = getInt(properties.options.defaultChoice); + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed); +} + +function confirmationCallback() { + var prompt = getString(properties.options.prompt); + var messageType = getInt(properties.options.messageType); + var options = getArray(properties.options.options); + var optionType = getInt(properties.options.optionType); + var defaultOption = getInt(properties.options.defaultOption); + if (isStringPresent(properties.options.prompt)) { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption); + } + } else { + if (isIntPresent(properties.options.optionType)) { + callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption); + } else { + callbacksBuilder.confirmationCallback(messageType, options, defaultOption); + } + } +} + +function consentMappingCallback() { + var config = getObject(properties.options.config); + var message = getString(properties.options.message); + var isRequired = getBoolean(properties.options.isRequired); + var name = getString(properties.options.name); + var displayName = getString(properties.options.displayName); + var icon = getString(properties.options.icon); + var accessLevel = getString(properties.options.accessLevel); + var titles = getArray(properties.options.titles); + if (isObjectPresent(properties.options.prompt)) { + callbacksBuilder.consentMappingCallback(config, message, isRequired); + } else { + callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired); + } +} + +function deviceProfileCallback() { + var metadata = getBoolean(properties.options.metadata); + var location = getBoolean(properties.options.location); + var message = getString(properties.options.message); + callbacksBuilder.deviceProfileCallback(metadata, location, message); +} + +function hiddenValueCallback() { + var id = getString(properties.options.id); + var value = getString(properties.options.value); + callbacksBuilder.hiddenValueCallback(id, value); +} + +function httpCallback() { + var authorizationHeader = getString(properties.options.authorizationHeader); + var negotiationHeader = getString(properties.options.negotiationHeader); + var authRHeader = getString(properties.options.authRHeader); + var negoName = getString(properties.options.negoName); + var negoValue = getString(properties.options.negoValue); + if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) { + var errorCode = getString(properties.options.errorCode); + callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode); + } else { + var errorCode = getInt(properties.options.errorCode); + callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode); + } +} + +function idPCallback() { + var provider = getString(properties.options.provider); + var clientId = getString(properties.options.clientId); + var redirectUri = getString(properties.options.redirectUri); + var scope = getArray(properties.options.scope); + var nonce = getString(properties.options.nonce); + var request = getString(properties.options.request); + var requestUri = getString(properties.options.requestUri); + var acrValues = getArray(properties.options.acrValues); + var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo); + var token = getString(properties.options.token); + var tokenType = getString(properties.options.tokenType); + if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType); + } else { + callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo); + } +} + +function kbaCreateCallback() { + var prompt = getString(properties.options.prompt); + var predefinedQuestions = getArray(properties.options.predefinedQuestions); + var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions); + callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions); +} + +function languageCallback() { + var language = getString(properties.options.language); + var country = getString(properties.options.country); + callbacksBuilder.languageCallback(language, country); +} + +function metadataCallback() { + var outputValue = getObject(properties.options.outputValue); + callbacksBuilder.metadataCallback(outputValue); +} + +function nameCallback() { + var prompt = getString(properties.options.prompt); + var defaultName = getString(properties.options.defaultName); + if (isStringPresent(properties.options.defaultName)) { + callbacksBuilder.nameCallback(prompt, defaultName); + } else { + callbacksBuilder.nameCallback(prompt); + } +} + +function numberAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getDouble(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required); + } +} + +function passwordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + callbacksBuilder.passwordCallback(prompt, echoOn); +} + +function pollingWaitCallback() { + var waitTime = getString(properties.options.waitTime); + var message = getString(properties.options.message); + callbacksBuilder.pollingWaitCallback(waitTime, message); +} + +function redirectCallback() { + throw new Error('Not Implemented'); +} + +function scriptTextOutputCallback() { + var message = getString(properties.options.message); + callbacksBuilder.scriptTextOutputCallback(message); +} + +function selectIdPCallback() { + var providers = getObject(properties.options.providers); + callbacksBuilder.selectIdPCallback(providers); +} + +function stringAttributeInputCallback() { + var name = getString(properties.options.name); + var prompt = getString(properties.options.prompt); + var value = getString(properties.options.value); + var required = getBoolean(properties.options.required); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) { + if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly); + } + } else if (isArrayPresent(failedPolicies)) { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies); + } else { + callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required); + } +} + +function suspendedTextOutputCallback() { + var messageType = getInt(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.suspendedTextOutputCallback(messageType, message); +} + +function termsAndConditionsCallback() { + var version = getString(properties.options.version); + var terms = getString(properties.options.terms); + var createDate = getString(properties.options.createDate); + callbacksBuilder.termsAndConditionsCallback(version, terms, createDate); +} + +function textInputCallback() { + var prompt = getString(properties.options.prompt); + var defaultText = getString(properties.options.defaultText); + if (isStringPresent(properties.options.defaultText)) { + callbacksBuilder.textInputCallback(prompt, defaultText); + } else { + callbacksBuilder.textInputCallback(prompt); + } +} + +function textOutputCallback() { + var messageType = getString(properties.options.messageType); + var message = getString(properties.options.message); + callbacksBuilder.textOutputCallback(messageType, message); +} + +function validatedPasswordCallback() { + var prompt = getString(properties.options.prompt); + var echoOn = getBoolean(properties.options.echoOn); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly); + } +} + +function validatedUsernameCallback() { + var prompt = getString(properties.options.prompt); + var policies = getObject(properties.options.policies); + var validateOnly = getBoolean(properties.options.validateOnly); + var failedPolicies = getArray(properties.options.failedPolicies); + if (isArrayPresent(properties.options.failedPolicies)) { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies); + } else { + callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly); + } +} + +function x509CertificateCallback() { + throw new Error('Not Implemented'); +} + +function getBooleanAttributeInputCallback() { + setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0)); +} + +function getChoiceCallback() { + var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed); + var selections = callbacks.getChoiceCallbacks().get(0); + setProperty(multipleSelectionsAllowed ? selections : selections[0]); +} + +function getConfirmationCallback() { + setProperty(callbacks.getConfirmationCallbacks().get(0)); +} + +function getConsentMappingCallback() { + setProperty(callbacks.getConsentMappingCallbacks().get(0)); +} + +function getDeviceProfileCallback() { + setProperty(callbacks.getDeviceProfileCallbacks().get(0)); +} + +function getHiddenValueCallback() { + var id = getString(properties.options.id); + setProperty(callbacks.getHiddenValueCallbacks().get(id)); +} + +function getHttpCallback() { + setProperty(callbacks.getHttpCallbacks().get(0)); +} + +function getIdPCallback() { + setProperty(callbacks.getIdpCallbacks().get(0)); +} + +function getKbaCreateCallback() { + setProperty(callbacks.getKbaCreateCallbacks().get(0)); +} + +function getLanguageCallback() { + setProperty(callbacks.getLanguageCallbacks().get(0)); +} + +function getNameCallback() { + setProperty(callbacks.getNameCallbacks().get(0)); +} + +function getNumberAttributeInputCallback() { + setProperty(callbacks.getNumberAttributeInputCallbacks().get(0)); +} + +function getPasswordCallback() { + setProperty(callbacks.getPasswordCallbacks().get(0)); +} + +function getSelectIdPCallback() { + setProperty(callbacks.getSelectIdPCallbacks().get(0)); +} + +function getStringAttributeInputCallback() { + setProperty(callbacks.getStringAttributeInputCallbacks().get(0)); +} + +function getTermsAndConditionsCallback() { + setProperty(callbacks.getTermsAndConditionsCallbacks().get(0)); +} + +function getTextInputCallback() { + setProperty(callbacks.getTextInputCallbacks().get(0)); +} + +function getValidatedPasswordCallback() { + setProperty(callbacks.getValidatedPasswordCallbacks().get(0)); +} + +function getValidatedUsernameCallback() { + setProperty(callbacks.getValidatedUsernameCallbacks().get(0)); +} + +function getX509CertificateCallback() { + setProperty(callbacks.getX509CertificateCallbacks().get(0)); +} + +function main() { + if (!callbacks.isEmpty()) { + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break; + case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break; + case CALLBACKS.NAME_CALLBACK: getNameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break; + default: break; + } + action.goTo(SCRIPT_OUTCOMES.OUTCOME); + return; + } + + switch (properties.callback) { + case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break; + case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break; + case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break; + case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break; + case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break; + case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break; + case CALLBACKS.HTTP_CALLBACK: httpCallback(); break; + case CALLBACKS.IDP_CALLBACK: idPCallback(); break; + case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break; + case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break; + case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break; + case CALLBACKS.NAME_CALLBACK: nameCallback(); break; + case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break; + case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break; + case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break; + case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break; + case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break; + case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break; + case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break; + case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break; + case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break; + case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break; + case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break; + case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break; + case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break; + case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break; + default: throw new Error('Unknown Callback'); // Should never reach this case + } +} + +main(); diff --git a/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Display Callback/Display Callback.json b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Display Callback/Display Callback.json new file mode 100644 index 000000000..ceb957868 --- /dev/null +++ b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Display Callback/Display Callback.json @@ -0,0 +1,91 @@ +{ + "_id": "ef81b1a52c914710b3388caebfe7233a-1", + "description": "Displays custom callback to the page", + "displayName": "Display Callback", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "outcome" + ], + "outputs": [], + "properties": { + "callback": { + "description": "The callback to display", + "multivalued": false, + "options": { + "BOOLEAN_ATTRIBUTE_INPUT_CALLBACK": "booleanAttributeInputCallback", + "CHOICE_CALLBACK": "choiceCallback", + "CONFIRMATION_CALLBACK": "confirmationCallback", + "CONSENT_MAPPING_CALLBACK": "consentMappingCallback", + "DEVICE_PROFILE_CALLBACK": "deviceProfileCallback", + "HIDDEN_VALUE_CALLBACK": "hiddenValueCallback", + "HTTP_CALLBACK": "httpCallback", + "IDP_CALLBACK": "idPCallback", + "KBA_CREATE_CALLBACK": "kbaCreateCallback", + "LANGUAGE_CALLBACK": "languageCallback", + "METADATA_CALLBACK": "metadataCallback", + "NAME_CALLBACK": "nameCallback", + "NUMBER_ATTRIBUTE_INPUT_CALLBACK": "numberAttributeInputCallback", + "PASSWORD_CALLBACK": "passwordCallback", + "POLLING_WAIT_CALLBACK": "pollingWaitCallback", + "REDIRECT_CALLBACK": "redirectCallback", + "SCRIPT_TEXT_OUTPUT_CALLBACK": "scriptTextOutputCallback", + "SELECT_IDP_CALLBACK": "selectIdPCallback", + "STRING_ATTRIBUTE_INPUT_CALLBACK": "stringAttributeInputCallback", + "SUSPENDED_TEXT_OUTPUT_CALLBACK": "suspendedTextOutputCallback", + "TERMS_AND_CONDITIONS_CALLBACK": "termsAndConditionsCallback", + "TEXT_INPUT_CALLBACK": "textInputCallback", + "TEXT_OUTPUT_CALLBACK": "textOutputCallback", + "VALIDATED_PASSWORD_CALLBACK": "validatedPasswordCallback", + "VALIDATED_USERNAME_CALLBACK": "validatedUsernameCallback", + "X509_CERTIFICATE_CALLBACK": "x509CertificateCallback" + }, + "required": true, + "title": "Callback", + "type": "STRING" + }, + "objectSharedProperty": { + "description": "The objectAttributes property on the shared state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Shared Property", + "type": "STRING" + }, + "objectTransientProperty": { + "description": "The objectAttributes property on the transient state to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Object Attributes Transient Property", + "type": "STRING" + }, + "options": { + "description": "The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \n\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \"Hello World!\" }. \n\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\"\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).", + "multivalued": false, + "required": true, + "title": "Options", + "type": "OBJECT" + }, + "sharedProperty": { + "description": "The shared state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Shared State Property", + "type": "STRING" + }, + "transientProperty": { + "description": "The transient state property to put the callback input into (if applicable)", + "multivalued": false, + "required": false, + "title": "Transient State Property", + "type": "STRING" + } + }, + "script": { + "file": "Display Callback.js" + }, + "serviceName": "ef81b1a52c914710b3388caebfe7233a", + "tags": [ + "callback", + "utilities" + ] +} diff --git a/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Has Session AM/Has Session AM.js b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Has Session AM/Has Session AM.js new file mode 100644 index 000000000..c8711597e --- /dev/null +++ b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Has Session AM/Has Session AM.js @@ -0,0 +1,10 @@ +var SCRIPT_OUTCOMES = { + TRUE: 'True', + FALSE: 'False' +} + +function main() { + action.goTo(typeof existingSession === "undefined" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE); +} + +main(); diff --git a/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Has Session AM/Has Session AM.json b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Has Session AM/Has Session AM.json new file mode 100644 index 000000000..21c9c507f --- /dev/null +++ b/test/e2e/exports/fr-config-manager/forgeops/custom-nodes/nodes/Has Session AM/Has Session AM.json @@ -0,0 +1,20 @@ +{ + "_id": "session-1", + "description": "Checks if the user has a current session.", + "displayName": "Has Session AM", + "errorOutcome": false, + "inputs": [], + "outcomes": [ + "True", + "False" + ], + "outputs": [], + "properties": {}, + "script": { + "file": "Has Session AM.js" + }, + "serviceName": "session", + "tags": [ + "utilities" + ] +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_m_314327836/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_m_314327836/am_1076162899/recording.har new file mode 100644 index 000000000..ddcad469b --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_m_314327836/am_1076162899/recording.har @@ -0,0 +1,780 @@ +{ + "log": { + "_recordingName": "config-manager/pull/custom-nodes/0_D_m/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 370, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 587, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 587, + "text": "{\"_id\":\"*\",\"_rev\":\"2075994313\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"iPlanetDirectoryPro\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"nodeDesignerXuiEnabled\":true}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "587" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"2075994313\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:13.521Z", + "time": 12, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 12 + } + }, + { + "_id": "9f5671275c36a1c0090d0df26ce0e93f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "resource=2.0, protocol=1.0" + }, + { + "name": "x-openam-username", + "value": "amadmin" + }, + { + "name": "x-openam-password", + "value": "41ghjnKpNFAFU/HXw82HbFbitYNOOJ0g" + }, + { + "name": "content-length", + "value": "2" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 497, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/realms/root/authenticate" + }, + "response": { + "bodySize": 167, + "content": { + "mimeType": "application/json", + "size": 167, + "text": "{\"tokenId\":\"\",\"successUrl\":\"/am/console\",\"realm\":\"/\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "iPlanetDirectoryPro", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "amlbcookie", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "content-length", + "value": "167" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "iPlanetDirectoryPro=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "amlbcookie=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.1" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 693, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:13.539Z", + "time": 24, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 24 + } + }, + { + "_id": "6a3744385d3fd7416ea7089e610fa7e7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 128, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "resource=4.0" + }, + { + "name": "content-length", + "value": "128" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"tokenId\":\"\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "getSessionInfo" + } + ], + "url": "https://platform.dev.trivir.com/am/json/realms/root/sessions/?_action=getSessionInfo" + }, + "response": { + "bodySize": 291, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 291, + "text": "{\"username\":\"amadmin\",\"universalId\":\"id=amadmin,ou=user,ou=am-config\",\"realm\":\"/\",\"latestAccessTime\":\"2026-04-13T22:11:13Z\",\"maxIdleExpirationTime\":\"2026-04-13T22:41:13Z\",\"maxSessionExpirationTime\":\"2026-04-14T00:11:12Z\",\"properties\":{\"AMCtxId\":\"d65b280f-e163-4042-871b-1d0ffe1512eb-12065\"}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "291" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=4.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:13.570Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 520, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 257, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 257, + "text": "{\"_id\":\"version\",\"_rev\":\"-466575464\",\"version\":\"8.0.1\",\"fullVersion\":\"ForgeRock Access Management 8.0.1 Build b59bc0908346197b0c33afcb9e733d0400feeea1 (2025-April-15 11:37)\",\"revision\":\"b59bc0908346197b0c33afcb9e733d0400feeea1\",\"date\":\"2025-April-15 11:37\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "257" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-466575464\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:13.583Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "e6efe3392d787815b92258f4573fd0b4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type?_queryFilter=true" + }, + "response": { + "bodySize": 33591, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 33591, + "text": "{\"result\":[{\"_id\":\"c6063fb2f5dc42dd9772bedc93898bd8-1\",\"_rev\":\"1733504144\",\"serviceName\":\"c6063fb2f5dc42dd9772bedc93898bd8\",\"displayName\":\"ALU\",\"description\":\"Simple ALU that performs basic binary math operations. Expects an \\\"x\\\" and \\\"y\\\" value on the shared state, and will produce a new \\\"z\\\" value on the shared state as output.\",\"outcomes\":[\"Success\"],\"outputs\":[\"z\"],\"inputs\":[\"x\",\"y\"],\"script\":\"var SCRIPT_OUTCOMES = {\\n SUCCESS: 'Success'\\n};\\n\\nvar OPERATORS = {\\n ADD: \\\"ADD\\\",\\n SUBTRACT: \\\"SUBTRACT\\\",\\n MULTIPLY: \\\"MULTIPLY\\\",\\n DIVIDE: \\\"DIVIDE\\\"\\n}\\n\\nfunction main() {\\n var a = Number(properties.a);\\n var b = Number(properties.b);\\n switch (properties.operator) {\\n case OPERATORS.ADD:\\n nodeState.putShared(\\\"z\\\", a + b);\\n break;\\n case OPERATORS.SUBTRACT:\\n nodeState.putShared(\\\"z\\\", a - b);\\n break;\\n case OPERATORS.MULTIPLY:\\n nodeState.putShared(\\\"z\\\", a * b);\\n break;\\n case OPERATORS.DIVIDE:\\n if (b == 0) throw new Error(\\\"Cannot divide by 0\\\");\\n nodeState.putShared(\\\"z\\\", a / b);\\n break;\\n default: throw new Error(\\\"Unknown operator.\\\");\\n }\\n action.goTo(SCRIPT_OUTCOMES.SUCCESS);\\n}\\n\\nmain();\\n\",\"errorOutcome\":true,\"tags\":[\"math\",\"utilities\"],\"properties\":{\"operator\":{\"title\":\"Operator\",\"description\":\"The operation to perform.\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"ADD\",\"options\":{\"ADD\":\"+\",\"MULTIPLY\":\"*\",\"SUBTRACT\":\"-\",\"DIVIDE\":\"/\"},\"multivalued\":false}}},{\"_id\":\"8ab9f1aad4b4460a9c45d15fb148e221-1\",\"_rev\":\"1713151721\",\"serviceName\":\"8ab9f1aad4b4460a9c45d15fb148e221\",\"displayName\":\"Display State\",\"description\":\"Debug node that displays the shared and transient state of the journey for debugging purposes.\",\"outcomes\":[\"outcome\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: \\\"outcome\\\"\\n};\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n var keySet = nodeState.keys(); // Java Set\\n var keys = Array.from(keySet); // Make it into JavaScript array\\n debugState = {};\\n for (var i in keys) {\\n var k = new String(keys[i]);\\n var item = nodeState.get(k);\\n if (typeof item === \\\"object\\\") {\\n debugState[k] = nodeState.getObject(k);\\n } else {\\n debugState[k] = nodeState.get(k);\\n }\\n }\\n if (properties.displayFormat === \\\"JSON\\\") {\\n callbacksBuilder.textOutputCallback(0, `
${JSON.stringify(debugState, null, 2)}
`);\\n return;\\n }\\n callbacksBuilder.textOutputCallback(0, `${Array.from(Object.keys(debugState).map(k => ``))}
KeyValue
${k}
${debugState[k]}
`);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"debug\",\"testing\"],\"properties\":{\"displayFormat\":{\"title\":\"Display Format\",\"description\":\"The format in which to display the states.\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"TABLE\",\"options\":{\"TABLE\":\"HTML Table\",\"JSON\":\"Raw JSON\"},\"multivalued\":false}}},{\"_id\":\"c605506774a848f7877b4d17a453bd39-1\",\"_rev\":\"1583432423\",\"serviceName\":\"c605506774a848f7877b4d17a453bd39\",\"displayName\":\"Has Session\",\"description\":\"Checks if the user has a current session.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"utilities\"],\"properties\":{}},{\"_id\":\"session-1\",\"_rev\":\"1248028795\",\"serviceName\":\"session\",\"displayName\":\"Has Session AM\",\"description\":\"Checks if the user has a current session.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"utilities\"],\"properties\":{}},{\"_id\":\"c15e2efb3deb4d4ea338c74a6440b69f-1\",\"_rev\":\"-2034215288\",\"serviceName\":\"c15e2efb3deb4d4ea338c74a6440b69f\",\"displayName\":\"Vector ALU\",\"description\":\"Simple ALU that performs basic binary vector math operations. Outputs the result onto the shared state with key \\\"c\\\".\",\"outcomes\":[\"Success\"],\"outputs\":[\"c\"],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n SUCCESS: 'Success'\\n};\\n\\nvar OPERATORS = {\\n ADD: \\\"ADD\\\",\\n SUBTRACT: \\\"SUBTRACT\\\",\\n DOT: \\\"DOT\\\",\\n CROSS: \\\"CROSS\\\"\\n}\\n\\nfunction add(a, b) {\\n return a.map((v, i) => v + b[i]);\\n}\\n\\nfunction subtract(a, b) {\\n return a.map((v, i) => v - b[i]);\\n}\\n\\nfunction dot(a, b) {\\n return a.reduce((sum, v, i) => sum + v * b[i], 0);\\n}\\n\\nfunction cross(a, b) {\\n return [\\n a[1] * b[2] - a[2] * b[1],\\n a[2] * b[0] - a[0] * b[2],\\n a[0] * b[1] - a[1] * b[0]\\n ];\\n}\\n\\nfunction main() {\\n if (properties.a.length !== properties.b.length) throw new Error(\\\"Vectors not the same dimension.\\\");\\n switch (properties.operator) {\\n case OPERATORS.ADD:\\n nodeState.putShared(\\\"c\\\", add(properties.a, properties.b));\\n break;\\n case OPERATORS.SUBTRACT:\\n nodeState.putShared(\\\"c\\\", subtract(properties.a, properties.b));\\n break;\\n case OPERATORS.DOT:\\n nodeState.putShared(\\\"c\\\", dot(properties.a, properties.b));\\n break;\\n case OPERATORS.CROSS:\\n if (properties.a.length !== 3) throw new Error(\\\"Vectors not dimension 3 for cross product\\\");\\n nodeState.putShared(\\\"c\\\", cross(properties.a, properties.b));\\n break;\\n default: throw new Error(\\\"Unknown operator.\\\");\\n }\\n action.goTo(SCRIPT_OUTCOMES.SUCCESS);\\n}\\n\\nmain();\\n\",\"errorOutcome\":true,\"tags\":[\"math\",\"vector\",\"utilities\"],\"properties\":{\"a\":{\"title\":\"A\",\"description\":\"Left vector operand\",\"type\":\"NUMBER\",\"required\":true,\"defaultValue\":[1,2,3],\"multivalued\":true},\"b\":{\"title\":\"B\",\"description\":\"Right vector operand\",\"type\":\"NUMBER\",\"required\":true,\"defaultValue\":[4,5,6],\"multivalued\":true},\"operator\":{\"title\":\"Operator\",\"description\":\"The binary operation to perform on the vectors.\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"DOT\",\"options\":{\"ADD\":\"+\",\"CROSS\":\"X\",\"DOT\":\".\",\"SUBTRACT\":\"-\"},\"multivalued\":false}}},{\"_id\":\"e5ad0110c8ee4dafaae983003cd05d4a-1\",\"_rev\":\"573016413\",\"serviceName\":\"e5ad0110c8ee4dafaae983003cd05d4a\",\"displayName\":\"Generate JWT\",\"description\":\"Generate a signed JWT using the HMAC SHA-256 algorithm.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var aud = properties.audience;\\nvar iss = properties.issuer;\\nvar validity = properties.validity;\\nvar esv = properties.signingkey;\\n\\nvar signingkey = systemEnv.getProperty(esv);\\n\\nvar username = nodeState.get(\\\"username\\\");\\n\\nvar data = {\\n jwtType:\\\"SIGNED\\\",\\n jwsAlgorithm: \\\"HS256\\\",\\n issuer: iss,\\n subject: username,\\n audience: aud,\\n type: \\\"JWT\\\",\\n validityMinutes: validity,\\n signingKey: signingkey\\n};\\n\\nvar jwt = jwtAssertion.generateJwt(data);\\n\\nif (jwt !== null && jwt.length > 0) {\\n nodeState.putShared(\\\"assertionJwt\\\" , jwt);\\n action.goTo(\\\"True\\\");\\n} else {\\n action.goTo(\\\"False\\\");\\n}\\n\",\"errorOutcome\":true,\"tags\":[\"Utilities\",\"utilities\"],\"properties\":{\"audience\":{\"title\":\"Audience\",\"description\":\"The audience (aud) claim\",\"type\":\"STRING\",\"required\":true,\"multivalued\":false},\"issuer\":{\"title\":\"Issuer\",\"description\":\"The issuer (iss) claim\",\"type\":\"STRING\",\"required\":true,\"multivalued\":false},\"signingkey\":{\"title\":\"HMAC Signing Key\",\"description\":\"The secret label for the HMAC signing key\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"esv.signing.key\",\"multivalued\":false},\"validity\":{\"title\":\"Validity (minutes)\",\"description\":\"\",\"type\":\"NUMBER\",\"required\":true,\"defaultValue\":5,\"multivalued\":false}}},{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"_rev\":\"1723458869\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"displayName\":\"Display Callback\",\"description\":\"Displays custom callback to the page\",\"outcomes\":[\"outcome\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"callback\",\"utilities\"],\"properties\":{\"callback\":{\"title\":\"Callback\",\"description\":\"The callback to display\",\"type\":\"STRING\",\"required\":true,\"options\":{\"METADATA_CALLBACK\":\"metadataCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\"},\"multivalued\":false},\"objectSharedProperty\":{\"title\":\"Object Attributes Shared Property\",\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"objectTransientProperty\":{\"title\":\"Object Attributes Transient Property\",\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"options\":{\"title\":\"Options\",\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"type\":\"OBJECT\",\"required\":true,\"multivalued\":false},\"sharedProperty\":{\"title\":\"Shared State Property\",\"description\":\"The shared state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"transientProperty\":{\"title\":\"Transient State Property\",\"description\":\"The transient state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false}}}],\"resultCount\":7,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"EXACT\",\"totalPagedResults\":7,\"remainingPagedResults\":-1}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "transfer-encoding", + "value": "chunked" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 644, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:13.677Z", + "time": 9, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 9 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_m_314327836/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_m_314327836/oauth2_393036114/recording.har new file mode 100644 index 000000000..b34b30eda --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_m_314327836/oauth2_393036114/recording.har @@ -0,0 +1,289 @@ +{ + "log": { + "_recordingName": "config-manager/pull/custom-nodes/0_D_m/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "a684e2f67fd67a4263878c3124af167a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 365, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "365" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 565, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idm-admin-ui&csrf=TZTPpCLGkex90Xi3gF9X9bnWlPQ.*AAJTSQACMDIAAlNLABw2VnJPSmdBcXdZNWNacXhtM0ZOOGdqNC9oNVU9AAR0eXBlAANDVFMAAlMxAAIwMQ..*&decision=allow&code_challenge=ZByMVKUzuPfJ54tcv4ytC8jLxg8Vp2InlKA_Xoe_RGo&code_challenge_method=S256" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/authorize" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/plain", + "size": 0 + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "expires": "1970-01-01T00:00:00.000Z", + "httpOnly": true, + "name": "OAUTH_REQUEST_ATTRIBUTES", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-length", + "value": "0" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "OAUTH_REQUEST_ATTRIBUTES=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "location", + "value": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=yidr7CqLl83wCrLAUtbTVLECXxo&iss=https%3A%2F%2Fplatform.dev.trivir.com%2Fam%2Foauth2&client_id=idm-admin-ui" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 673, + "httpVersion": "HTTP/1.1", + "redirectURL": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=yidr7CqLl83wCrLAUtbTVLECXxo&iss=https%3A%2F%2Fplatform.dev.trivir.com%2Fam%2Foauth2&client_id=idm-admin-ui", + "status": 302, + "statusText": "Found" + }, + "startedDateTime": "2026-04-13T22:11:13.596Z", + "time": 19, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 19 + } + }, + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 224, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-57641519-67ef-4da6-8b71-2538f4143c60" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "224" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "client_id=idm-admin-ui&redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&grant_type=authorization_code&code=yidr7CqLl83wCrLAUtbTVLECXxo&code_verifier=MMypQYIABQU7mcr6pH2fb5qrX9BJKGHvI8tJ_1jL7V0" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1249, + "text": "{\"access_token\":\"\",\"scope\":\"openid fr:idm:*\",\"id_token\":\"\",\"token_type\":\"Bearer\",\"expires_in\":239}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:13 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1249" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 404, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:13.622Z", + "time": 46, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 46 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_n_m_3294969001/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_n_m_3294969001/am_1076162899/recording.har new file mode 100644 index 000000000..94f535f1b --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_n_m_3294969001/am_1076162899/recording.har @@ -0,0 +1,780 @@ +{ + "log": { + "_recordingName": "config-manager/pull/custom-nodes/0_D_n_m/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 370, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 587, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 587, + "text": "{\"_id\":\"*\",\"_rev\":\"2075994313\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"iPlanetDirectoryPro\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"nodeDesignerXuiEnabled\":true}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:37 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "587" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"2075994313\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:37.978Z", + "time": 14, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 14 + } + }, + { + "_id": "9f5671275c36a1c0090d0df26ce0e93f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "resource=2.0, protocol=1.0" + }, + { + "name": "x-openam-username", + "value": "amadmin" + }, + { + "name": "x-openam-password", + "value": "41ghjnKpNFAFU/HXw82HbFbitYNOOJ0g" + }, + { + "name": "content-length", + "value": "2" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 497, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/realms/root/authenticate" + }, + "response": { + "bodySize": 167, + "content": { + "mimeType": "application/json", + "size": 167, + "text": "{\"tokenId\":\"\",\"successUrl\":\"/am/console\",\"realm\":\"/\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "iPlanetDirectoryPro", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "amlbcookie", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:37 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "content-length", + "value": "167" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "iPlanetDirectoryPro=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "amlbcookie=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.1" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 693, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:37.997Z", + "time": 18, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 18 + } + }, + { + "_id": "6a3744385d3fd7416ea7089e610fa7e7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 128, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "resource=4.0" + }, + { + "name": "content-length", + "value": "128" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"tokenId\":\"\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "getSessionInfo" + } + ], + "url": "https://platform.dev.trivir.com/am/json/realms/root/sessions/?_action=getSessionInfo" + }, + "response": { + "bodySize": 291, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 291, + "text": "{\"username\":\"amadmin\",\"universalId\":\"id=amadmin,ou=user,ou=am-config\",\"realm\":\"/\",\"latestAccessTime\":\"2026-04-13T22:11:37Z\",\"maxIdleExpirationTime\":\"2026-04-13T22:41:37Z\",\"maxSessionExpirationTime\":\"2026-04-14T00:11:36Z\",\"properties\":{\"AMCtxId\":\"d65b280f-e163-4042-871b-1d0ffe1512eb-12127\"}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:37 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "291" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=4.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 609, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:38.021Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 520, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 257, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 257, + "text": "{\"_id\":\"version\",\"_rev\":\"-466575464\",\"version\":\"8.0.1\",\"fullVersion\":\"ForgeRock Access Management 8.0.1 Build b59bc0908346197b0c33afcb9e733d0400feeea1 (2025-April-15 11:37)\",\"revision\":\"b59bc0908346197b0c33afcb9e733d0400feeea1\",\"date\":\"2025-April-15 11:37\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:37 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "257" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-466575464\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:38.036Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "e6efe3392d787815b92258f4573fd0b4", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 556, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [ + { + "name": "_queryFilter", + "value": "true" + } + ], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type?_queryFilter=true" + }, + "response": { + "bodySize": 33591, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 33591, + "text": "{\"result\":[{\"_id\":\"c6063fb2f5dc42dd9772bedc93898bd8-1\",\"_rev\":\"1733504144\",\"serviceName\":\"c6063fb2f5dc42dd9772bedc93898bd8\",\"displayName\":\"ALU\",\"description\":\"Simple ALU that performs basic binary math operations. Expects an \\\"x\\\" and \\\"y\\\" value on the shared state, and will produce a new \\\"z\\\" value on the shared state as output.\",\"outcomes\":[\"Success\"],\"outputs\":[\"z\"],\"inputs\":[\"x\",\"y\"],\"script\":\"var SCRIPT_OUTCOMES = {\\n SUCCESS: 'Success'\\n};\\n\\nvar OPERATORS = {\\n ADD: \\\"ADD\\\",\\n SUBTRACT: \\\"SUBTRACT\\\",\\n MULTIPLY: \\\"MULTIPLY\\\",\\n DIVIDE: \\\"DIVIDE\\\"\\n}\\n\\nfunction main() {\\n var a = Number(properties.a);\\n var b = Number(properties.b);\\n switch (properties.operator) {\\n case OPERATORS.ADD:\\n nodeState.putShared(\\\"z\\\", a + b);\\n break;\\n case OPERATORS.SUBTRACT:\\n nodeState.putShared(\\\"z\\\", a - b);\\n break;\\n case OPERATORS.MULTIPLY:\\n nodeState.putShared(\\\"z\\\", a * b);\\n break;\\n case OPERATORS.DIVIDE:\\n if (b == 0) throw new Error(\\\"Cannot divide by 0\\\");\\n nodeState.putShared(\\\"z\\\", a / b);\\n break;\\n default: throw new Error(\\\"Unknown operator.\\\");\\n }\\n action.goTo(SCRIPT_OUTCOMES.SUCCESS);\\n}\\n\\nmain();\\n\",\"errorOutcome\":true,\"tags\":[\"math\",\"utilities\"],\"properties\":{\"operator\":{\"title\":\"Operator\",\"description\":\"The operation to perform.\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"ADD\",\"options\":{\"ADD\":\"+\",\"MULTIPLY\":\"*\",\"SUBTRACT\":\"-\",\"DIVIDE\":\"/\"},\"multivalued\":false}}},{\"_id\":\"8ab9f1aad4b4460a9c45d15fb148e221-1\",\"_rev\":\"1713151721\",\"serviceName\":\"8ab9f1aad4b4460a9c45d15fb148e221\",\"displayName\":\"Display State\",\"description\":\"Debug node that displays the shared and transient state of the journey for debugging purposes.\",\"outcomes\":[\"outcome\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: \\\"outcome\\\"\\n};\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n var keySet = nodeState.keys(); // Java Set\\n var keys = Array.from(keySet); // Make it into JavaScript array\\n debugState = {};\\n for (var i in keys) {\\n var k = new String(keys[i]);\\n var item = nodeState.get(k);\\n if (typeof item === \\\"object\\\") {\\n debugState[k] = nodeState.getObject(k);\\n } else {\\n debugState[k] = nodeState.get(k);\\n }\\n }\\n if (properties.displayFormat === \\\"JSON\\\") {\\n callbacksBuilder.textOutputCallback(0, `
${JSON.stringify(debugState, null, 2)}
`);\\n return;\\n }\\n callbacksBuilder.textOutputCallback(0, `${Array.from(Object.keys(debugState).map(k => ``))}
KeyValue
${k}
${debugState[k]}
`);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"debug\",\"testing\"],\"properties\":{\"displayFormat\":{\"title\":\"Display Format\",\"description\":\"The format in which to display the states.\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"TABLE\",\"options\":{\"TABLE\":\"HTML Table\",\"JSON\":\"Raw JSON\"},\"multivalued\":false}}},{\"_id\":\"c605506774a848f7877b4d17a453bd39-1\",\"_rev\":\"1583432423\",\"serviceName\":\"c605506774a848f7877b4d17a453bd39\",\"displayName\":\"Has Session\",\"description\":\"Checks if the user has a current session.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"utilities\"],\"properties\":{}},{\"_id\":\"session-1\",\"_rev\":\"1248028795\",\"serviceName\":\"session\",\"displayName\":\"Has Session AM\",\"description\":\"Checks if the user has a current session.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"utilities\"],\"properties\":{}},{\"_id\":\"c15e2efb3deb4d4ea338c74a6440b69f-1\",\"_rev\":\"-2034215288\",\"serviceName\":\"c15e2efb3deb4d4ea338c74a6440b69f\",\"displayName\":\"Vector ALU\",\"description\":\"Simple ALU that performs basic binary vector math operations. Outputs the result onto the shared state with key \\\"c\\\".\",\"outcomes\":[\"Success\"],\"outputs\":[\"c\"],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n SUCCESS: 'Success'\\n};\\n\\nvar OPERATORS = {\\n ADD: \\\"ADD\\\",\\n SUBTRACT: \\\"SUBTRACT\\\",\\n DOT: \\\"DOT\\\",\\n CROSS: \\\"CROSS\\\"\\n}\\n\\nfunction add(a, b) {\\n return a.map((v, i) => v + b[i]);\\n}\\n\\nfunction subtract(a, b) {\\n return a.map((v, i) => v - b[i]);\\n}\\n\\nfunction dot(a, b) {\\n return a.reduce((sum, v, i) => sum + v * b[i], 0);\\n}\\n\\nfunction cross(a, b) {\\n return [\\n a[1] * b[2] - a[2] * b[1],\\n a[2] * b[0] - a[0] * b[2],\\n a[0] * b[1] - a[1] * b[0]\\n ];\\n}\\n\\nfunction main() {\\n if (properties.a.length !== properties.b.length) throw new Error(\\\"Vectors not the same dimension.\\\");\\n switch (properties.operator) {\\n case OPERATORS.ADD:\\n nodeState.putShared(\\\"c\\\", add(properties.a, properties.b));\\n break;\\n case OPERATORS.SUBTRACT:\\n nodeState.putShared(\\\"c\\\", subtract(properties.a, properties.b));\\n break;\\n case OPERATORS.DOT:\\n nodeState.putShared(\\\"c\\\", dot(properties.a, properties.b));\\n break;\\n case OPERATORS.CROSS:\\n if (properties.a.length !== 3) throw new Error(\\\"Vectors not dimension 3 for cross product\\\");\\n nodeState.putShared(\\\"c\\\", cross(properties.a, properties.b));\\n break;\\n default: throw new Error(\\\"Unknown operator.\\\");\\n }\\n action.goTo(SCRIPT_OUTCOMES.SUCCESS);\\n}\\n\\nmain();\\n\",\"errorOutcome\":true,\"tags\":[\"math\",\"vector\",\"utilities\"],\"properties\":{\"a\":{\"title\":\"A\",\"description\":\"Left vector operand\",\"type\":\"NUMBER\",\"required\":true,\"defaultValue\":[1,2,3],\"multivalued\":true},\"b\":{\"title\":\"B\",\"description\":\"Right vector operand\",\"type\":\"NUMBER\",\"required\":true,\"defaultValue\":[4,5,6],\"multivalued\":true},\"operator\":{\"title\":\"Operator\",\"description\":\"The binary operation to perform on the vectors.\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"DOT\",\"options\":{\"ADD\":\"+\",\"CROSS\":\"X\",\"DOT\":\".\",\"SUBTRACT\":\"-\"},\"multivalued\":false}}},{\"_id\":\"e5ad0110c8ee4dafaae983003cd05d4a-1\",\"_rev\":\"573016413\",\"serviceName\":\"e5ad0110c8ee4dafaae983003cd05d4a\",\"displayName\":\"Generate JWT\",\"description\":\"Generate a signed JWT using the HMAC SHA-256 algorithm.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var aud = properties.audience;\\nvar iss = properties.issuer;\\nvar validity = properties.validity;\\nvar esv = properties.signingkey;\\n\\nvar signingkey = systemEnv.getProperty(esv);\\n\\nvar username = nodeState.get(\\\"username\\\");\\n\\nvar data = {\\n jwtType:\\\"SIGNED\\\",\\n jwsAlgorithm: \\\"HS256\\\",\\n issuer: iss,\\n subject: username,\\n audience: aud,\\n type: \\\"JWT\\\",\\n validityMinutes: validity,\\n signingKey: signingkey\\n};\\n\\nvar jwt = jwtAssertion.generateJwt(data);\\n\\nif (jwt !== null && jwt.length > 0) {\\n nodeState.putShared(\\\"assertionJwt\\\" , jwt);\\n action.goTo(\\\"True\\\");\\n} else {\\n action.goTo(\\\"False\\\");\\n}\\n\",\"errorOutcome\":true,\"tags\":[\"Utilities\",\"utilities\"],\"properties\":{\"audience\":{\"title\":\"Audience\",\"description\":\"The audience (aud) claim\",\"type\":\"STRING\",\"required\":true,\"multivalued\":false},\"issuer\":{\"title\":\"Issuer\",\"description\":\"The issuer (iss) claim\",\"type\":\"STRING\",\"required\":true,\"multivalued\":false},\"signingkey\":{\"title\":\"HMAC Signing Key\",\"description\":\"The secret label for the HMAC signing key\",\"type\":\"STRING\",\"required\":true,\"defaultValue\":\"esv.signing.key\",\"multivalued\":false},\"validity\":{\"title\":\"Validity (minutes)\",\"description\":\"\",\"type\":\"NUMBER\",\"required\":true,\"defaultValue\":5,\"multivalued\":false}}},{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"_rev\":\"1723458869\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"displayName\":\"Display Callback\",\"description\":\"Displays custom callback to the page\",\"outcomes\":[\"outcome\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"callback\",\"utilities\"],\"properties\":{\"callback\":{\"title\":\"Callback\",\"description\":\"The callback to display\",\"type\":\"STRING\",\"required\":true,\"options\":{\"METADATA_CALLBACK\":\"metadataCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\"},\"multivalued\":false},\"objectSharedProperty\":{\"title\":\"Object Attributes Shared Property\",\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"objectTransientProperty\":{\"title\":\"Object Attributes Transient Property\",\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"options\":{\"title\":\"Options\",\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"type\":\"OBJECT\",\"required\":true,\"multivalued\":false},\"sharedProperty\":{\"title\":\"Shared State Property\",\"description\":\"The shared state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"transientProperty\":{\"title\":\"Transient State Property\",\"description\":\"The transient state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false}}}],\"resultCount\":7,\"pagedResultsCookie\":null,\"totalPagedResultsPolicy\":\"EXACT\",\"totalPagedResults\":7,\"remainingPagedResults\":-1}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:38 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "transfer-encoding", + "value": "chunked" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "protocol=2.1,resource=1.0, resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 643, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:38.121Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_n_m_3294969001/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_n_m_3294969001/oauth2_393036114/recording.har new file mode 100644 index 000000000..06d46a68f --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/pull_2167214206/custom-nodes_3091214966/0_D_n_m_3294969001/oauth2_393036114/recording.har @@ -0,0 +1,289 @@ +{ + "log": { + "_recordingName": "config-manager/pull/custom-nodes/0_D_n_m/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "a684e2f67fd67a4263878c3124af167a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 365, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "365" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 565, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idm-admin-ui&csrf=nqXBJnakFDlQfqJ63GeMDj28iqs.*AAJTSQACMDIAAlNLABw2QTg5aTl6bGlqNzhqamdMLzZZVU5wZDY5T3M9AAR0eXBlAANDVFMAAlMxAAIwMQ..*&decision=allow&code_challenge=MDXqt6c4KfHPoXHhjueJybxpVLf0f-IsIfeeHEqEnTo&code_challenge_method=S256" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/authorize" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/plain", + "size": 0 + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "expires": "1970-01-01T00:00:00.000Z", + "httpOnly": true, + "name": "OAUTH_REQUEST_ATTRIBUTES", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:38 GMT" + }, + { + "name": "content-length", + "value": "0" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "OAUTH_REQUEST_ATTRIBUTES=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "location", + "value": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=2EfmesXRo_rOB64xgZGI_Rpt7sk&iss=https%3A%2F%2Fplatform.dev.trivir.com%2Fam%2Foauth2&client_id=idm-admin-ui" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 673, + "httpVersion": "HTTP/1.1", + "redirectURL": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=2EfmesXRo_rOB64xgZGI_Rpt7sk&iss=https%3A%2F%2Fplatform.dev.trivir.com%2Fam%2Foauth2&client_id=idm-admin-ui", + "status": 302, + "statusText": "Found" + }, + "startedDateTime": "2026-04-13T22:11:38.048Z", + "time": 20, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 20 + } + }, + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 224, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-36" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-2bbd1177-cbbd-4974-972a-04dbc344d69a" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "224" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "client_id=idm-admin-ui&redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&grant_type=authorization_code&code=2EfmesXRo_rOB64xgZGI_Rpt7sk&code_verifier=MCcQh-8Acvr7RnDUugNPSwsUPGwsjtKnrNXGI5Y1EDA" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1249, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1249, + "text": "{\"access_token\":\"\",\"scope\":\"openid fr:idm:*\",\"id_token\":\"\",\"token_type\":\"Bearer\",\"expires_in\":239}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Mon, 13 Apr 2026 22:11:38 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1249" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 405, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-13T22:11:38.076Z", + "time": 35, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 35 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_D_m_314327836/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_D_m_314327836/am_1076162899/recording.har new file mode 100644 index 000000000..3abb38c2e --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_D_m_314327836/am_1076162899/recording.har @@ -0,0 +1,1259 @@ +{ + "log": { + "_recordingName": "config-manager/push/custom-nodes/0_D_m/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 370, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 587, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 587, + "text": "{\"_id\":\"*\",\"_rev\":\"2075994313\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"iPlanetDirectoryPro\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"nodeDesignerXuiEnabled\":true}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:32 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "587" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"2075994313\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 630, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.002Z", + "time": 11, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 11 + } + }, + { + "_id": "9f5671275c36a1c0090d0df26ce0e93f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "resource=2.0, protocol=1.0" + }, + { + "name": "x-openam-username", + "value": "amadmin" + }, + { + "name": "x-openam-password", + "value": "41ghjnKpNFAFU/HXw82HbFbitYNOOJ0g" + }, + { + "name": "content-length", + "value": "2" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 497, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/realms/root/authenticate" + }, + "response": { + "bodySize": 167, + "content": { + "mimeType": "application/json", + "size": 167, + "text": "{\"tokenId\":\"\",\"successUrl\":\"/am/console\",\"realm\":\"/\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "iPlanetDirectoryPro", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "amlbcookie", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:32 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "content-length", + "value": "167" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "iPlanetDirectoryPro=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "amlbcookie=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.1" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 693, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.019Z", + "time": 19, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 19 + } + }, + { + "_id": "6a3744385d3fd7416ea7089e610fa7e7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 128, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "resource=4.0" + }, + { + "name": "content-length", + "value": "128" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"tokenId\":\"\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "getSessionInfo" + } + ], + "url": "https://platform.dev.trivir.com/am/json/realms/root/sessions/?_action=getSessionInfo" + }, + "response": { + "bodySize": 291, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 291, + "text": "{\"username\":\"amadmin\",\"universalId\":\"id=amadmin,ou=user,ou=am-config\",\"realm\":\"/\",\"latestAccessTime\":\"2026-04-21T16:16:32Z\",\"maxIdleExpirationTime\":\"2026-04-21T16:46:32Z\",\"maxSessionExpirationTime\":\"2026-04-21T18:16:31Z\",\"properties\":{\"AMCtxId\":\"19429558-d568-482d-afd8-81b04249611b-15752\"}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:32 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "291" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=4.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.044Z", + "time": 5, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 5 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 520, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 257, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 257, + "text": "{\"_id\":\"version\",\"_rev\":\"-466575464\",\"version\":\"8.0.1\",\"fullVersion\":\"ForgeRock Access Management 8.0.1 Build b59bc0908346197b0c33afcb9e733d0400feeea1 (2025-April-15 11:37)\",\"revision\":\"b59bc0908346197b0c33afcb9e733d0400feeea1\",\"date\":\"2025-April-15 11:37\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:32 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "257" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-466575464\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.056Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "733b0209c304d46ce0fcfa49646e7753", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 25131, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "25131" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 562, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"description\":\"Displays custom callback to the page\",\"displayName\":\"Display Callback\",\"errorOutcome\":false,\"inputs\":[],\"outcomes\":[\"outcome\"],\"outputs\":[],\"properties\":{\"callback\":{\"description\":\"The callback to display\",\"multivalued\":false,\"options\":{\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\",\"METADATA_CALLBACK\":\"metadataCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\"},\"required\":true,\"title\":\"Callback\",\"type\":\"STRING\"},\"objectSharedProperty\":{\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Shared Property\",\"type\":\"STRING\"},\"objectTransientProperty\":{\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Transient Property\",\"type\":\"STRING\"},\"options\":{\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"multivalued\":false,\"required\":true,\"title\":\"Options\",\"type\":\"OBJECT\"},\"sharedProperty\":{\"description\":\"The shared state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Shared State Property\",\"type\":\"STRING\"},\"transientProperty\":{\"description\":\"The transient state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Transient State Property\",\"type\":\"STRING\"}},\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"tags\":[\"callback\",\"utilities\"]}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 119, + "text": "{\"code\":409,\"reason\":\"Conflict\",\"message\":\"Node Type with resource id ef81b1a52c914710b3388caebfe7233a already exists\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:33 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2026-04-21T16:16:33.153Z", + "time": 10, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 10 + } + }, + { + "_id": "7b93c39dd7d90434240d968bf4d63f7b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 25131, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "if-match", + "value": "*" + }, + { + "name": "content-length", + "value": "25131" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 609, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"description\":\"Displays custom callback to the page\",\"displayName\":\"Display Callback\",\"errorOutcome\":false,\"inputs\":[],\"outcomes\":[\"outcome\"],\"outputs\":[],\"properties\":{\"callback\":{\"description\":\"The callback to display\",\"multivalued\":false,\"options\":{\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\",\"METADATA_CALLBACK\":\"metadataCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\"},\"required\":true,\"title\":\"Callback\",\"type\":\"STRING\"},\"objectSharedProperty\":{\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Shared Property\",\"type\":\"STRING\"},\"objectTransientProperty\":{\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Transient Property\",\"type\":\"STRING\"},\"options\":{\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"multivalued\":false,\"required\":true,\"title\":\"Options\",\"type\":\"OBJECT\"},\"sharedProperty\":{\"description\":\"The shared state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Shared State Property\",\"type\":\"STRING\"},\"transientProperty\":{\"description\":\"The transient state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Transient State Property\",\"type\":\"STRING\"}},\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"tags\":[\"callback\",\"utilities\"]}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type/ef81b1a52c914710b3388caebfe7233a-1" + }, + "response": { + "bodySize": 25152, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 25152, + "text": "{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"_rev\":\"-1006280236\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"displayName\":\"Display Callback\",\"description\":\"Displays custom callback to the page\",\"outcomes\":[\"outcome\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"callback\",\"utilities\"],\"properties\":{\"callback\":{\"title\":\"Callback\",\"description\":\"The callback to display\",\"type\":\"STRING\",\"required\":true,\"options\":{\"METADATA_CALLBACK\":\"metadataCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\"},\"multivalued\":false},\"objectSharedProperty\":{\"title\":\"Object Attributes Shared Property\",\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"objectTransientProperty\":{\"title\":\"Object Attributes Transient Property\",\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"options\":{\"title\":\"Options\",\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"type\":\"OBJECT\",\"required\":true,\"multivalued\":false},\"sharedProperty\":{\"title\":\"Shared State Property\",\"description\":\"The shared state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"transientProperty\":{\"title\":\"Transient State Property\",\"description\":\"The transient state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false}}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:33 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "transfer-encoding", + "value": "chunked" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1006280236\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 638, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.178Z", + "time": 89, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 89 + } + }, + { + "_id": "7431bbfd9758c5297f14f6396d9f44c1", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 464, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "464" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 560, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"session-1\",\"description\":\"Checks if the user has a current session.\",\"displayName\":\"Has Session AM\",\"errorOutcome\":false,\"inputs\":[],\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"properties\":{},\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"serviceName\":\"session\",\"tags\":[\"utilities\"]}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type" + }, + "response": { + "bodySize": 94, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 94, + "text": "{\"code\":409,\"reason\":\"Conflict\",\"message\":\"Node Type with resource id session already exists\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:33 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "94" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 609, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2026-04-21T16:16:33.359Z", + "time": 8, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 8 + } + }, + { + "_id": "28549f9482248fbe8d2f6629c88a8d02", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 464, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "if-match", + "value": "*" + }, + { + "name": "content-length", + "value": "464" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 582, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"session-1\",\"description\":\"Checks if the user has a current session.\",\"displayName\":\"Has Session AM\",\"errorOutcome\":false,\"inputs\":[],\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"properties\":{},\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"serviceName\":\"session\",\"tags\":[\"utilities\"]}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type/session-1" + }, + "response": { + "bodySize": 483, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 483, + "text": "{\"_id\":\"session-1\",\"_rev\":\"675338052\",\"serviceName\":\"session\",\"displayName\":\"Has Session AM\",\"description\":\"Checks if the user has a current session.\",\"outcomes\":[\"True\",\"False\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n TRUE: 'True',\\n FALSE: 'False'\\n}\\n\\nfunction main() {\\n action.goTo(typeof existingSession === \\\"undefined\\\" ? SCRIPT_OUTCOMES.FALSE : SCRIPT_OUTCOMES.TRUE);\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"utilities\"],\"properties\":{}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:33 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "483" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"675338052\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 629, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.372Z", + "time": 59, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 59 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_D_m_314327836/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_D_m_314327836/oauth2_393036114/recording.har new file mode 100644 index 000000000..3e541592a --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_D_m_314327836/oauth2_393036114/recording.har @@ -0,0 +1,289 @@ +{ + "log": { + "_recordingName": "config-manager/push/custom-nodes/0_D_m/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "a684e2f67fd67a4263878c3124af167a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 365, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "365" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 565, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idm-admin-ui&csrf=d3E0fwz0FHQlN2dZcXhkhkxiscI.*AAJTSQACMDIAAlNLABw2TS81T0hWVDhSREwrQ3Q1T0Rld3BONjFNTmM9AAR0eXBlAANDVFMAAlMxAAIwMQ..*&decision=allow&code_challenge=5PCbX3aKCaYkig5e9nXp9qYOMZo-bs0Qomt9b6snU7I&code_challenge_method=S256" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/authorize" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/plain", + "size": 0 + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "expires": "1970-01-01T00:00:00.000Z", + "httpOnly": true, + "name": "OAUTH_REQUEST_ATTRIBUTES", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:32 GMT" + }, + { + "name": "content-length", + "value": "0" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "OAUTH_REQUEST_ATTRIBUTES=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "location", + "value": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=4fjOsfKYQ30DVgZfduj_yH3jaA4&iss=https%3A%2F%2Fplatform.dev.trivir.com%3A443%2Fam%2Foauth2&client_id=idm-admin-ui" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "redirectURL": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=4fjOsfKYQ30DVgZfduj_yH3jaA4&iss=https%3A%2F%2Fplatform.dev.trivir.com%3A443%2Fam%2Foauth2&client_id=idm-admin-ui", + "status": 302, + "statusText": "Found" + }, + "startedDateTime": "2026-04-21T16:16:33.069Z", + "time": 14, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 14 + } + }, + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 224, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-6403e86c-c261-4fac-ad7f-60c35e6341d8" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "224" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "client_id=idm-admin-ui&redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&grant_type=authorization_code&code=4fjOsfKYQ30DVgZfduj_yH3jaA4&code_verifier=BGL6SOqumlP1RRKkfu1oxkMdcDbkejuKGCX2Vt9XOIc" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1254, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1254, + "text": "{\"access_token\":\"\",\"scope\":\"openid fr:idm:*\",\"id_token\":\"\",\"token_type\":\"Bearer\",\"expires_in\":239}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:16:33 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1254" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 405, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:16:33.091Z", + "time": 41, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 41 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_n_D_m_1348920437/am_1076162899/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_n_D_m_1348920437/am_1076162899/recording.har new file mode 100644 index 000000000..8c0d8ecb7 --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_n_D_m_1348920437/am_1076162899/recording.har @@ -0,0 +1,945 @@ +{ + "log": { + "_recordingName": "config-manager/push/custom-nodes/0_n_D_m/am", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "ccd7a5defd0fdeaa986a2b54642d911a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "resource=1.1" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 370, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/*" + }, + "response": { + "bodySize": 587, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 587, + "text": "{\"_id\":\"*\",\"_rev\":\"2075994313\",\"domains\":[],\"protectedUserAttributes\":[\"telephoneNumber\",\"mail\"],\"cookieName\":\"iPlanetDirectoryPro\",\"secureCookie\":true,\"forgotPassword\":\"false\",\"forgotUsername\":\"false\",\"kbaEnabled\":\"false\",\"selfRegistration\":\"false\",\"lang\":\"en-US\",\"successfulUserRegistrationDestination\":\"default\",\"socialImplementations\":[],\"referralsEnabled\":\"false\",\"zeroPageLogin\":{\"enabled\":false,\"refererWhitelist\":[],\"allowedWithoutReferer\":true},\"realm\":\"/\",\"xuiUserSessionValidationEnabled\":true,\"fileBasedConfiguration\":true,\"userIdAttributes\":[],\"nodeDesignerXuiEnabled\":true}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "587" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.1" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"2075994313\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:19:55.231Z", + "time": 13, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 13 + } + }, + { + "_id": "9f5671275c36a1c0090d0df26ce0e93f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 2, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "resource=2.0, protocol=1.0" + }, + { + "name": "x-openam-username", + "value": "amadmin" + }, + { + "name": "x-openam-password", + "value": "41ghjnKpNFAFU/HXw82HbFbitYNOOJ0g" + }, + { + "name": "content-length", + "value": "2" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 497, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/realms/root/authenticate" + }, + "response": { + "bodySize": 167, + "content": { + "mimeType": "application/json", + "size": 167, + "text": "{\"tokenId\":\"\",\"successUrl\":\"/am/console\",\"realm\":\"/\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "iPlanetDirectoryPro", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + }, + { + "httpOnly": true, + "name": "amlbcookie", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "content-length", + "value": "167" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "iPlanetDirectoryPro=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "amlbcookie=; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=2.1" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 693, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:19:55.250Z", + "time": 19, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 19 + } + }, + { + "_id": "6a3744385d3fd7416ea7089e610fa7e7", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 128, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "resource=4.0" + }, + { + "name": "content-length", + "value": "128" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"tokenId\":\"\"}" + }, + "queryString": [ + { + "name": "_action", + "value": "getSessionInfo" + } + ], + "url": "https://platform.dev.trivir.com/am/json/realms/root/sessions/?_action=getSessionInfo" + }, + "response": { + "bodySize": 291, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 291, + "text": "{\"username\":\"amadmin\",\"universalId\":\"id=amadmin,ou=user,ou=am-config\",\"realm\":\"/\",\"latestAccessTime\":\"2026-04-21T16:19:55Z\",\"maxIdleExpirationTime\":\"2026-04-21T16:49:55Z\",\"maxSessionExpirationTime\":\"2026-04-21T18:19:54Z\",\"properties\":{\"AMCtxId\":\"19429558-d568-482d-afd8-81b04249611b-16252\"}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "291" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=4.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:19:55.276Z", + "time": 5, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 5 + } + }, + { + "_id": "6125d0328ad0dcaee55f73fd8b22ca14", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 0, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 520, + "httpVersion": "HTTP/1.1", + "method": "GET", + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/serverinfo/version" + }, + "response": { + "bodySize": 257, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 257, + "text": "{\"_id\":\"version\",\"_rev\":\"-466575464\",\"version\":\"8.0.1\",\"fullVersion\":\"ForgeRock Access Management 8.0.1 Build b59bc0908346197b0c33afcb9e733d0400feeea1 (2025-April-15 11:37)\",\"revision\":\"b59bc0908346197b0c33afcb9e733d0400feeea1\",\"date\":\"2025-April-15 11:37\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "257" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-466575464\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 631, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:19:55.287Z", + "time": 6, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 6 + } + }, + { + "_id": "733b0209c304d46ce0fcfa49646e7753", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 25131, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "25131" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 562, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"description\":\"Displays custom callback to the page\",\"displayName\":\"Display Callback\",\"errorOutcome\":false,\"inputs\":[],\"outcomes\":[\"outcome\"],\"outputs\":[],\"properties\":{\"callback\":{\"description\":\"The callback to display\",\"multivalued\":false,\"options\":{\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\",\"METADATA_CALLBACK\":\"metadataCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\"},\"required\":true,\"title\":\"Callback\",\"type\":\"STRING\"},\"objectSharedProperty\":{\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Shared Property\",\"type\":\"STRING\"},\"objectTransientProperty\":{\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Transient Property\",\"type\":\"STRING\"},\"options\":{\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"multivalued\":false,\"required\":true,\"title\":\"Options\",\"type\":\"OBJECT\"},\"sharedProperty\":{\"description\":\"The shared state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Shared State Property\",\"type\":\"STRING\"},\"transientProperty\":{\"description\":\"The transient state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Transient State Property\",\"type\":\"STRING\"}},\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"tags\":[\"callback\",\"utilities\"]}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type" + }, + "response": { + "bodySize": 119, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 119, + "text": "{\"code\":409,\"reason\":\"Conflict\",\"message\":\"Node Type with resource id ef81b1a52c914710b3388caebfe7233a already exists\"}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "119" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 610, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 409, + "statusText": "Conflict" + }, + "startedDateTime": "2026-04-21T16:19:55.376Z", + "time": 11, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 11 + } + }, + { + "_id": "7b93c39dd7d90434240d968bf4d63f7b", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 25131, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "if-match", + "value": "*" + }, + { + "name": "content-length", + "value": "25131" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 609, + "httpVersion": "HTTP/1.1", + "method": "PUT", + "postData": { + "mimeType": "application/json", + "params": [], + "text": "{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"description\":\"Displays custom callback to the page\",\"displayName\":\"Display Callback\",\"errorOutcome\":false,\"inputs\":[],\"outcomes\":[\"outcome\"],\"outputs\":[],\"properties\":{\"callback\":{\"description\":\"The callback to display\",\"multivalued\":false,\"options\":{\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\",\"METADATA_CALLBACK\":\"metadataCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\"},\"required\":true,\"title\":\"Callback\",\"type\":\"STRING\"},\"objectSharedProperty\":{\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Shared Property\",\"type\":\"STRING\"},\"objectTransientProperty\":{\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Object Attributes Transient Property\",\"type\":\"STRING\"},\"options\":{\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"multivalued\":false,\"required\":true,\"title\":\"Options\",\"type\":\"OBJECT\"},\"sharedProperty\":{\"description\":\"The shared state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Shared State Property\",\"type\":\"STRING\"},\"transientProperty\":{\"description\":\"The transient state property to put the callback input into (if applicable)\",\"multivalued\":false,\"required\":false,\"title\":\"Transient State Property\",\"type\":\"STRING\"}},\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"tags\":[\"callback\",\"utilities\"]}" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/json/node-designer/node-type/ef81b1a52c914710b3388caebfe7233a-1" + }, + "response": { + "bodySize": 25152, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 25152, + "text": "{\"_id\":\"ef81b1a52c914710b3388caebfe7233a-1\",\"_rev\":\"-1096991574\",\"serviceName\":\"ef81b1a52c914710b3388caebfe7233a\",\"displayName\":\"Display Callback\",\"description\":\"Displays custom callback to the page\",\"outcomes\":[\"outcome\"],\"outputs\":[],\"inputs\":[],\"script\":\"var SCRIPT_OUTCOMES = {\\n OUTCOME: 'outcome'\\n};\\n\\nvar CALLBACKS = {\\n\\tBOOLEAN_ATTRIBUTE_INPUT_CALLBACK: \\\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tCHOICE_CALLBACK: \\\"CHOICE_CALLBACK\\\",\\n\\tCONFIRMATION_CALLBACK: \\\"CONFIRMATION_CALLBACK\\\",\\n\\tCONSENT_MAPPING_CALLBACK: \\\"CONSENT_MAPPING_CALLBACK\\\",\\n\\tDEVICE_PROFILE_CALLBACK: \\\"DEVICE_PROFILE_CALLBACK\\\",\\n\\tHIDDEN_VALUE_CALLBACK: \\\"HIDDEN_VALUE_CALLBACK\\\",\\n\\tHTTP_CALLBACK: \\\"HTTP_CALLBACK\\\",\\n\\tIDP_CALLBACK: \\\"IDP_CALLBACK\\\",\\n\\tKBA_CREATE_CALLBACK: \\\"KBA_CREATE_CALLBACK\\\",\\n\\tLANGUAGE_CALLBACK: \\\"LANGUAGE_CALLBACK\\\",\\n\\tMETADATA_CALLBACK: \\\"METADATA_CALLBACK\\\",\\n\\tNAME_CALLBACK: \\\"NAME_CALLBACK\\\",\\n\\tNUMBER_ATTRIBUTE_INPUT_CALLBACK: \\\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tPASSWORD_CALLBACK: \\\"PASSWORD_CALLBACK\\\",\\n\\tPOLLING_WAIT_CALLBACK: \\\"POLLING_WAIT_CALLBACK\\\",\\n REDIRECT_CALLBACK: \\\"REDIRECT_CALLBACK\\\",\\n\\tSCRIPT_TEXT_OUTPUT_CALLBACK: \\\"SCRIPT_TEXT_OUTPUT_CALLBACK\\\",\\n\\tSELECT_IDP_CALLBACK: \\\"SELECT_IDP_CALLBACK\\\",\\n\\tSTRING_ATTRIBUTE_INPUT_CALLBACK: \\\"STRING_ATTRIBUTE_INPUT_CALLBACK\\\",\\n\\tSUSPENDED_TEXT_OUTPUT_CALLBACK: \\\"SUSPENDED_TEXT_OUTPUT_CALLBACK\\\",\\n\\tTERMS_AND_CONDITIONS_CALLBACK: \\\"TERMS_AND_CONDITIONS_CALLBACK\\\",\\n\\tTEXT_INPUT_CALLBACK: \\\"TEXT_INPUT_CALLBACK\\\",\\n\\tTEXT_OUTPUT_CALLBACK: \\\"TEXT_OUTPUT_CALLBACK\\\",\\n\\tVALIDATED_PASSWORD_CALLBACK: \\\"VALIDATED_PASSWORD_CALLBACK\\\",\\n\\tVALIDATED_USERNAME_CALLBACK: \\\"VALIDATED_USERNAME_CALLBACK\\\",\\n\\tX509_CERTIFICATE_CALLBACK: \\\"X509_CERTIFICATE_CALLBACK\\\"\\n}\\n\\nfunction isStringPresent(value) {\\n return value;\\n}\\n\\nfunction getString(value) {\\n return value || '';\\n}\\n\\nfunction isArrayPresent(value) {\\n return value;\\n}\\n\\nfunction getArray(value) {\\n return value ? JSON.parse(value) : [];\\n}\\n\\nfunction isObjectPresent(value) {\\n return value;\\n}\\n\\nfunction getObject(value) {\\n return value ? JSON.parse(value) : {};\\n}\\n\\nfunction isIntPresent(value) {\\n return value;\\n}\\n\\nfunction getInt(value) {\\n return value ? parseInt(value) : 0;\\n}\\n\\nfunction isDoublePresent(value) {\\n return value;\\n}\\n\\nfunction getDouble(value) {\\n return value ? parseFloat(value) : 0.0;\\n}\\n\\nfunction isBooleanPresent(value) {\\n return value;\\n}\\n\\nfunction getBoolean(value) {\\n return value ? value.toLowerCase() === 'true' : false;\\n}\\n\\nfunction setProperty(value) {\\n if (properties.sharedProperty) nodeState.putShared(properties.sharedProperty, value);\\n if (properties.transientProperty) nodeState.putTransient(properties.transientProperty, value);\\n if (properties.objectSharedProperty) {\\n var attributes = {};\\n attributes[properties.objectSharedProperty] = value;\\n nodeState.mergeShared({\\n objectAttributes: attributes\\n });\\n }\\n if (properties.objectTransientProperty) {\\n var attributes = {};\\n attributes[properties.objectTransientProperty] = value;\\n nodeState.mergeTransient({\\n objectAttributes: attributes\\n });\\n }\\n}\\n\\nfunction booleanAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getBoolean(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.booleanAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction choiceCallback() {\\n var prompt = getString(properties.options.prompt);\\n var choices = getArray(properties.options.choices);\\n var defaultChoice = getInt(properties.options.defaultChoice);\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n callbacksBuilder.choiceCallback(prompt, choices, defaultChoice, multipleSelectionsAllowed);\\n}\\n\\nfunction confirmationCallback() {\\n var prompt = getString(properties.options.prompt);\\n var messageType = getInt(properties.options.messageType);\\n var options = getArray(properties.options.options);\\n var optionType = getInt(properties.options.optionType);\\n var defaultOption = getInt(properties.options.defaultOption);\\n if (isStringPresent(properties.options.prompt)) {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(prompt, messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(prompt, messageType, options, defaultOption);\\n }\\n } else {\\n if (isIntPresent(properties.options.optionType)) {\\n callbacksBuilder.confirmationCallback(messageType, optionType, defaultOption);\\n } else {\\n callbacksBuilder.confirmationCallback(messageType, options, defaultOption);\\n }\\n }\\n}\\n\\nfunction consentMappingCallback() {\\n var config = getObject(properties.options.config);\\n var message = getString(properties.options.message);\\n var isRequired = getBoolean(properties.options.isRequired);\\n var name = getString(properties.options.name);\\n var displayName = getString(properties.options.displayName);\\n var icon = getString(properties.options.icon);\\n var accessLevel = getString(properties.options.accessLevel);\\n var titles = getArray(properties.options.titles);\\n if (isObjectPresent(properties.options.prompt)) {\\n callbacksBuilder.consentMappingCallback(config, message, isRequired);\\n } else {\\n callbacksBuilder.consentMappingCallback(name, displayName, icon, accessLevel, titles, message, isRequired);\\n }\\n}\\n\\nfunction deviceProfileCallback() {\\n var metadata = getBoolean(properties.options.metadata);\\n var location = getBoolean(properties.options.location);\\n var message = getString(properties.options.message);\\n callbacksBuilder.deviceProfileCallback(metadata, location, message);\\n}\\n\\nfunction hiddenValueCallback() {\\n var id = getString(properties.options.id);\\n var value = getString(properties.options.value);\\n callbacksBuilder.hiddenValueCallback(id, value);\\n}\\n\\nfunction httpCallback() {\\n var authorizationHeader = getString(properties.options.authorizationHeader);\\n var negotiationHeader = getString(properties.options.negotiationHeader);\\n var authRHeader = getString(properties.options.authRHeader);\\n var negoName = getString(properties.options.negoName);\\n var negoValue = getString(properties.options.negoValue);\\n if (isStringPresent(properties.options.authorizationHeader) || isStringPresent(properties.options.negotiationHeader)) {\\n var errorCode = getString(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authorizationHeader, negotiationHeader, errorCode);\\n } else {\\n var errorCode = getInt(properties.options.errorCode);\\n callbacksBuilder.httpCallback(authRHeader, negoName, negoValue, errorCode);\\n }\\n}\\n\\nfunction idPCallback() {\\n var provider = getString(properties.options.provider);\\n var clientId = getString(properties.options.clientId);\\n var redirectUri = getString(properties.options.redirectUri);\\n var scope = getArray(properties.options.scope);\\n var nonce = getString(properties.options.nonce);\\n var request = getString(properties.options.request);\\n var requestUri = getString(properties.options.requestUri);\\n var acrValues = getArray(properties.options.acrValues);\\n var requestNativeAppForUserInfo = getBoolean(properties.options.requestNativeAppForUserInfo);\\n var token = getString(properties.options.token);\\n var tokenType = getString(properties.options.tokenType);\\n if (isStringPresent(properties.options.token) || isStringPresent(properties.options.tokenType)) {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo, token, tokenType);\\n } else {\\n callbacksBuilder.idPCallback(provider, clientId, redirectUri, scope, nonce, request, requestUri, acrValues, requestNativeAppForUserInfo);\\n }\\n}\\n\\nfunction kbaCreateCallback() {\\n var prompt = getString(properties.options.prompt);\\n var predefinedQuestions = getArray(properties.options.predefinedQuestions);\\n var allowUserDefinedQuestions = getBoolean(properties.options.allowUserDefinedQuestions);\\n callbacksBuilder.kbaCreateCallback(prompt, predefinedQuestions, allowUserDefinedQuestions);\\n}\\n\\nfunction languageCallback() {\\n var language = getString(properties.options.language);\\n var country = getString(properties.options.country);\\n callbacksBuilder.languageCallback(language, country);\\n}\\n\\nfunction metadataCallback() {\\n var outputValue = getObject(properties.options.outputValue);\\n callbacksBuilder.metadataCallback(outputValue);\\n}\\n\\nfunction nameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultName = getString(properties.options.defaultName);\\n if (isStringPresent(properties.options.defaultName)) {\\n callbacksBuilder.nameCallback(prompt, defaultName);\\n } else {\\n callbacksBuilder.nameCallback(prompt);\\n }\\n}\\n\\nfunction numberAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getDouble(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.numberAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction passwordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n callbacksBuilder.passwordCallback(prompt, echoOn);\\n}\\n\\nfunction pollingWaitCallback() {\\n var waitTime = getString(properties.options.waitTime);\\n var message = getString(properties.options.message);\\n callbacksBuilder.pollingWaitCallback(waitTime, message);\\n}\\n\\nfunction redirectCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction scriptTextOutputCallback() {\\n var message = getString(properties.options.message);\\n callbacksBuilder.scriptTextOutputCallback(message);\\n}\\n\\nfunction selectIdPCallback() {\\n var providers = getObject(properties.options.providers);\\n callbacksBuilder.selectIdPCallback(providers);\\n}\\n\\nfunction stringAttributeInputCallback() {\\n var name = getString(properties.options.name);\\n var prompt = getString(properties.options.prompt);\\n var value = getString(properties.options.value);\\n var required = getBoolean(properties.options.required);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isBooleanPresent(properties.options.validateOnly) || isObjectPresent(properties.options.policies)) {\\n if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, policies, validateOnly);\\n }\\n } else if (isArrayPresent(failedPolicies)) {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required, failedPolicies);\\n } else {\\n callbacksBuilder.stringAttributeInputCallback(name, prompt, value, required);\\n }\\n}\\n\\nfunction suspendedTextOutputCallback() {\\n var messageType = getInt(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.suspendedTextOutputCallback(messageType, message);\\n}\\n\\nfunction termsAndConditionsCallback() {\\n var version = getString(properties.options.version);\\n var terms = getString(properties.options.terms);\\n var createDate = getString(properties.options.createDate);\\n callbacksBuilder.termsAndConditionsCallback(version, terms, createDate);\\n}\\n\\nfunction textInputCallback() {\\n var prompt = getString(properties.options.prompt);\\n var defaultText = getString(properties.options.defaultText);\\n if (isStringPresent(properties.options.defaultText)) {\\n callbacksBuilder.textInputCallback(prompt, defaultText);\\n } else {\\n callbacksBuilder.textInputCallback(prompt);\\n }\\n}\\n\\nfunction textOutputCallback() {\\n var messageType = getString(properties.options.messageType);\\n var message = getString(properties.options.message);\\n callbacksBuilder.textOutputCallback(messageType, message);\\n}\\n\\nfunction validatedPasswordCallback() {\\n var prompt = getString(properties.options.prompt);\\n var echoOn = getBoolean(properties.options.echoOn);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedPasswordCallback(prompt, echoOn, policies, validateOnly);\\n }\\n}\\n\\nfunction validatedUsernameCallback() {\\n var prompt = getString(properties.options.prompt);\\n var policies = getObject(properties.options.policies);\\n var validateOnly = getBoolean(properties.options.validateOnly);\\n var failedPolicies = getArray(properties.options.failedPolicies);\\n if (isArrayPresent(properties.options.failedPolicies)) {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly, failedPolicies);\\n } else {\\n callbacksBuilder.validatedUsernameCallback(prompt, policies, validateOnly);\\n }\\n}\\n\\nfunction x509CertificateCallback() {\\n throw new Error('Not Implemented');\\n}\\n\\nfunction getBooleanAttributeInputCallback() {\\n setProperty(callbacks.getBooleanAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getChoiceCallback() {\\n var multipleSelectionsAllowed = getBoolean(properties.options.multipleSelectionsAllowed);\\n var selections = callbacks.getChoiceCallbacks().get(0);\\n setProperty(multipleSelectionsAllowed ? selections : selections[0]);\\n}\\n\\nfunction getConfirmationCallback() {\\n setProperty(callbacks.getConfirmationCallbacks().get(0));\\n}\\n\\nfunction getConsentMappingCallback() {\\n setProperty(callbacks.getConsentMappingCallbacks().get(0));\\n}\\n\\nfunction getDeviceProfileCallback() {\\n setProperty(callbacks.getDeviceProfileCallbacks().get(0));\\n}\\n\\nfunction getHiddenValueCallback() {\\n var id = getString(properties.options.id);\\n setProperty(callbacks.getHiddenValueCallbacks().get(id));\\n}\\n\\nfunction getHttpCallback() {\\n setProperty(callbacks.getHttpCallbacks().get(0));\\n}\\n\\nfunction getIdPCallback() {\\n setProperty(callbacks.getIdpCallbacks().get(0));\\n}\\n\\nfunction getKbaCreateCallback() {\\n setProperty(callbacks.getKbaCreateCallbacks().get(0));\\n}\\n\\nfunction getLanguageCallback() {\\n setProperty(callbacks.getLanguageCallbacks().get(0));\\n}\\n\\nfunction getNameCallback() {\\n setProperty(callbacks.getNameCallbacks().get(0));\\n}\\n\\nfunction getNumberAttributeInputCallback() {\\n setProperty(callbacks.getNumberAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getPasswordCallback() {\\n setProperty(callbacks.getPasswordCallbacks().get(0));\\n}\\n\\nfunction getSelectIdPCallback() {\\n setProperty(callbacks.getSelectIdPCallbacks().get(0));\\n}\\n\\nfunction getStringAttributeInputCallback() {\\n setProperty(callbacks.getStringAttributeInputCallbacks().get(0));\\n}\\n\\nfunction getTermsAndConditionsCallback() {\\n setProperty(callbacks.getTermsAndConditionsCallbacks().get(0));\\n}\\n\\nfunction getTextInputCallback() {\\n setProperty(callbacks.getTextInputCallbacks().get(0));\\n}\\n\\nfunction getValidatedPasswordCallback() {\\n setProperty(callbacks.getValidatedPasswordCallbacks().get(0));\\n}\\n\\nfunction getValidatedUsernameCallback() {\\n setProperty(callbacks.getValidatedUsernameCallbacks().get(0));\\n}\\n\\nfunction getX509CertificateCallback() {\\n setProperty(callbacks.getX509CertificateCallbacks().get(0));\\n}\\n\\nfunction main() {\\n if (!callbacks.isEmpty()) {\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: getBooleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: getChoiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: getConfirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: getConsentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: getDeviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: getHiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: getHttpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: getIdPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: getKbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: getLanguageCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: getNameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: getNumberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: getPasswordCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: getSelectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: getStringAttributeInputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: getTermsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: getTextInputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: getValidatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: getValidatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: getX509CertificateCallback(); break;\\n default: break;\\n }\\n action.goTo(SCRIPT_OUTCOMES.OUTCOME);\\n return;\\n }\\n\\n switch (properties.callback) {\\n case CALLBACKS.BOOLEAN_ATTRIBUTE_INPUT_CALLBACK: booleanAttributeInputCallback(); break;\\n case CALLBACKS.CHOICE_CALLBACK: choiceCallback(); break;\\n case CALLBACKS.CONFIRMATION_CALLBACK: confirmationCallback(); break;\\n case CALLBACKS.CONSENT_MAPPING_CALLBACK: consentMappingCallback(); break;\\n case CALLBACKS.DEVICE_PROFILE_CALLBACK: deviceProfileCallback(); break;\\n case CALLBACKS.HIDDEN_VALUE_CALLBACK: hiddenValueCallback(); break;\\n case CALLBACKS.HTTP_CALLBACK: httpCallback(); break;\\n case CALLBACKS.IDP_CALLBACK: idPCallback(); break;\\n case CALLBACKS.KBA_CREATE_CALLBACK: kbaCreateCallback(); break;\\n case CALLBACKS.LANGUAGE_CALLBACK: languageCallback(); break;\\n case CALLBACKS.METADATA_CALLBACK: metadataCallback(); break;\\n case CALLBACKS.NAME_CALLBACK: nameCallback(); break;\\n case CALLBACKS.NUMBER_ATTRIBUTE_INPUT_CALLBACK: numberAttributeInputCallback(); break;\\n case CALLBACKS.PASSWORD_CALLBACK: passwordCallback(); break;\\n case CALLBACKS.POLLING_WAIT_CALLBACK: pollingWaitCallback(); break;\\n case CALLBACKS.REDIRECT_CALLBACK: redirectCallback(); break;\\n case CALLBACKS.SCRIPT_TEXT_OUTPUT_CALLBACK: scriptTextOutputCallback(); break;\\n case CALLBACKS.SELECT_IDP_CALLBACK: selectIdPCallback(); break;\\n case CALLBACKS.STRING_ATTRIBUTE_INPUT_CALLBACK: stringAttributeInputCallback(); break;\\n case CALLBACKS.SUSPENDED_TEXT_OUTPUT_CALLBACK: suspendedTextOutputCallback(); break;\\n case CALLBACKS.TERMS_AND_CONDITIONS_CALLBACK: termsAndConditionsCallback(); break;\\n case CALLBACKS.TEXT_INPUT_CALLBACK: textInputCallback(); break;\\n case CALLBACKS.TEXT_OUTPUT_CALLBACK: textOutputCallback(); break;\\n case CALLBACKS.VALIDATED_PASSWORD_CALLBACK: validatedPasswordCallback(); break;\\n case CALLBACKS.VALIDATED_USERNAME_CALLBACK: validatedUsernameCallback(); break;\\n case CALLBACKS.X509_CERTIFICATE_CALLBACK: x509CertificateCallback(); break;\\n default: throw new Error('Unknown Callback'); // Should never reach this case\\n }\\n}\\n\\nmain();\\n\",\"errorOutcome\":false,\"tags\":[\"callback\",\"utilities\"],\"properties\":{\"callback\":{\"title\":\"Callback\",\"description\":\"The callback to display\",\"type\":\"STRING\",\"required\":true,\"options\":{\"METADATA_CALLBACK\":\"metadataCallback\",\"TERMS_AND_CONDITIONS_CALLBACK\":\"termsAndConditionsCallback\",\"NUMBER_ATTRIBUTE_INPUT_CALLBACK\":\"numberAttributeInputCallback\",\"TEXT_OUTPUT_CALLBACK\":\"textOutputCallback\",\"SCRIPT_TEXT_OUTPUT_CALLBACK\":\"scriptTextOutputCallback\",\"CONSENT_MAPPING_CALLBACK\":\"consentMappingCallback\",\"STRING_ATTRIBUTE_INPUT_CALLBACK\":\"stringAttributeInputCallback\",\"IDP_CALLBACK\":\"idPCallback\",\"VALIDATED_PASSWORD_CALLBACK\":\"validatedPasswordCallback\",\"SELECT_IDP_CALLBACK\":\"selectIdPCallback\",\"POLLING_WAIT_CALLBACK\":\"pollingWaitCallback\",\"NAME_CALLBACK\":\"nameCallback\",\"SUSPENDED_TEXT_OUTPUT_CALLBACK\":\"suspendedTextOutputCallback\",\"REDIRECT_CALLBACK\":\"redirectCallback\",\"X509_CERTIFICATE_CALLBACK\":\"x509CertificateCallback\",\"PASSWORD_CALLBACK\":\"passwordCallback\",\"TEXT_INPUT_CALLBACK\":\"textInputCallback\",\"BOOLEAN_ATTRIBUTE_INPUT_CALLBACK\":\"booleanAttributeInputCallback\",\"CONFIRMATION_CALLBACK\":\"confirmationCallback\",\"CHOICE_CALLBACK\":\"choiceCallback\",\"DEVICE_PROFILE_CALLBACK\":\"deviceProfileCallback\",\"HIDDEN_VALUE_CALLBACK\":\"hiddenValueCallback\",\"HTTP_CALLBACK\":\"httpCallback\",\"VALIDATED_USERNAME_CALLBACK\":\"validatedUsernameCallback\",\"KBA_CREATE_CALLBACK\":\"kbaCreateCallback\",\"LANGUAGE_CALLBACK\":\"languageCallback\"},\"multivalued\":false},\"objectSharedProperty\":{\"title\":\"Object Attributes Shared Property\",\"description\":\"The objectAttributes property on the shared state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"objectTransientProperty\":{\"title\":\"Object Attributes Transient Property\",\"description\":\"The objectAttributes property on the transient state to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"options\":{\"title\":\"Options\",\"description\":\"The options containing the parameters for the callback (see documentation for possible parameters: https://docs.pingidentity.com/pingoneaic/latest/am-scripting/scripting-api-node.html#scripting-api-node-callbacks). \\n\\nFor example, for textOutputCallback, the options could be: { messageType: 0, message: \\\"Hello World!\\\" }. \\n\\nNote that for required parameters that are not specified in the options will use default values based on the type of the parameter (\\\"\\\" for Strings, [] for Arrays, {} for Objects, 0 for Ints, 0.0 for Doubles, and false for Booleans).\",\"type\":\"OBJECT\",\"required\":true,\"multivalued\":false},\"sharedProperty\":{\"title\":\"Shared State Property\",\"description\":\"The shared state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false},\"transientProperty\":{\"title\":\"Transient State Property\",\"description\":\"The transient state property to put the callback input into (if applicable)\",\"type\":\"STRING\",\"required\":false,\"multivalued\":false}}}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "transfer-encoding", + "value": "chunked" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "private" + }, + { + "name": "content-api-version", + "value": "resource=1.0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none';frame-ancestors 'none';sandbox" + }, + { + "name": "cross-origin-opener-policy", + "value": "same-origin" + }, + { + "name": "cross-origin-resource-policy", + "value": "same-origin" + }, + { + "name": "etag", + "value": "\"-1096991574\"" + }, + { + "name": "expires", + "value": "0" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 637, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:19:55.395Z", + "time": 67, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 67 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_n_D_m_1348920437/oauth2_393036114/recording.har b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_n_D_m_1348920437/oauth2_393036114/recording.har new file mode 100644 index 000000000..d58b1887c --- /dev/null +++ b/test/e2e/mocks/config-manager_4167095917/push_2272264157/custom-nodes_3091214966/0_n_D_m_1348920437/oauth2_393036114/recording.har @@ -0,0 +1,289 @@ +{ + "log": { + "_recordingName": "config-manager/push/custom-nodes/0_n_D_m/oauth2", + "creator": { + "comment": "persister:fs", + "name": "Polly.JS", + "version": "6.0.6" + }, + "entries": [ + { + "_id": "a684e2f67fd67a4263878c3124af167a", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 365, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "cookie", + "value": "iPlanetDirectoryPro=" + }, + { + "name": "content-length", + "value": "365" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 565, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&scope=fr:idm:* openid&response_type=code&client_id=idm-admin-ui&csrf=kiZdWp3dPoFr77d_cL_ffCaZOBg.*AAJTSQACMDIAAlNLABxDWjJzbGlxZnNVQkFKaEp4NGZqVnJHUVlqcTA9AAR0eXBlAANDVFMAAlMxAAIwMQ..*&decision=allow&code_challenge=v26W9UdHpIzofKhNAIm__c3nzHEyVVZizlDVtv1Fjis&code_challenge_method=S256" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/authorize" + }, + "response": { + "bodySize": 0, + "content": { + "mimeType": "text/plain", + "size": 0 + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + }, + { + "expires": "1970-01-01T00:00:00.000Z", + "httpOnly": true, + "name": "OAUTH_REQUEST_ATTRIBUTES", + "path": "/", + "sameSite": "none", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-length", + "value": "0" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "OAUTH_REQUEST_ATTRIBUTES=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Path=/; Secure; HttpOnly; SameSite=none" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "location", + "value": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=4m_rmA4w9Vj09NHyI9mbLMiunuM&iss=https%3A%2F%2Fplatform.dev.trivir.com%3A443%2Fam%2Foauth2&client_id=idm-admin-ui" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 679, + "httpVersion": "HTTP/1.1", + "redirectURL": "https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html?code=4m_rmA4w9Vj09NHyI9mbLMiunuM&iss=https%3A%2F%2Fplatform.dev.trivir.com%3A443%2Fam%2Foauth2&client_id=idm-admin-ui", + "status": 302, + "statusText": "Found" + }, + "startedDateTime": "2026-04-21T16:19:55.300Z", + "time": 12, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 12 + } + }, + { + "_id": "ff75519a93ccab829f8ee8cf5e92b49f", + "_order": 0, + "cache": {}, + "request": { + "bodySize": 224, + "cookies": [], + "headers": [ + { + "name": "accept", + "value": "application/json, text/plain, */*" + }, + { + "name": "content-type", + "value": "application/x-www-form-urlencoded" + }, + { + "name": "user-agent", + "value": "@rockcarver/frodo-lib/4.0.0-33" + }, + { + "name": "x-forgerock-transactionid", + "value": "frodo-9073a18e-05a0-4304-ad18-43028d28379d" + }, + { + "name": "accept-api-version", + "value": "protocol=2.1,resource=1.0" + }, + { + "name": "content-length", + "value": "224" + }, + { + "name": "accept-encoding", + "value": "gzip, compress, deflate, br" + }, + { + "name": "host", + "value": "openam-frodo-dev.forgeblocks.com" + } + ], + "headersSize": 424, + "httpVersion": "HTTP/1.1", + "method": "POST", + "postData": { + "mimeType": "application/x-www-form-urlencoded", + "params": [], + "text": "client_id=idm-admin-ui&redirect_uri=https://platform.dev.trivir.com/platform/appAuthHelperRedirect.html&grant_type=authorization_code&code=4m_rmA4w9Vj09NHyI9mbLMiunuM&code_verifier=IWFE6Em8X_9HXprSM2tY3JazMhfPVBjo4yYLEGKebgQ" + }, + "queryString": [], + "url": "https://platform.dev.trivir.com/am/oauth2/access_token" + }, + "response": { + "bodySize": 1254, + "content": { + "mimeType": "application/json;charset=UTF-8", + "size": 1254, + "text": "{\"access_token\":\"\",\"scope\":\"openid fr:idm:*\",\"id_token\":\"\",\"token_type\":\"Bearer\",\"expires_in\":239}" + }, + "cookies": [ + { + "httpOnly": true, + "name": "route", + "path": "/am", + "secure": true, + "value": "" + } + ], + "headers": [ + { + "name": "date", + "value": "Tue, 21 Apr 2026 16:19:55 GMT" + }, + { + "name": "content-type", + "value": "application/json;charset=UTF-8" + }, + { + "name": "content-length", + "value": "1254" + }, + { + "name": "connection", + "value": "keep-alive" + }, + { + "_fromType": "array", + "name": "set-cookie", + "value": "route=; Path=/am; Secure; HttpOnly" + }, + { + "name": "x-frame-options", + "value": "SAMEORIGIN" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "cache-control", + "value": "no-store" + }, + { + "name": "pragma", + "value": "no-cache" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubDomains" + } + ], + "headersSize": 404, + "httpVersion": "HTTP/1.1", + "redirectURL": "", + "status": 200, + "statusText": "OK" + }, + "startedDateTime": "2026-04-21T16:19:55.322Z", + "time": 43, + "timings": { + "blocked": -1, + "connect": -1, + "dns": -1, + "receive": 0, + "send": 0, + "ssl": -1, + "wait": 43 + } + } + ], + "pages": [], + "version": "1.2" + } +} diff --git a/test/e2e/mocks/github_584874290/recording.har b/test/e2e/mocks/github_584874290/recording.har index 8ae803013..e3187787b 100644 --- a/test/e2e/mocks/github_584874290/recording.har +++ b/test/e2e/mocks/github_584874290/recording.har @@ -25,7 +25,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/3.3.3" + "value": "@rockcarver/frodo-lib/4.0.0-33" }, { "name": "accept-encoding", @@ -33,28 +33,28 @@ }, { "name": "host", - "value": "api.github.com" + "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 259, + "headersSize": 262, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], "url": "https://api.github.com/repos/rockcarver/frodo-cli/releases" }, "response": { - "bodySize": 39043, + "bodySize": 41058, "content": { "encoding": "base64", "mimeType": "application/json; charset=utf-8", - "size": 39043, - "text": "[\"H4sIAAAAAAAAA+y9j3LbyJX/+yq4cqUy4zJF/CfASjbrseyxE/8bW5Ps7jglgQAoISYJBgAla5z51Vbdl7j3Be6D7ZPcbzf+EgRA0kTL9NZRUmOBAhrNBnC+ON3nc84vn09W0exkfHKdJMt4PBw6y+D0KkiuV5NTN5wPI38ZxsModD+6TnTjR8NpFHrhwJ0F+NPMd2I/Hqr6SLcs1RidPDpx4thP4ov+2hymLaLp1XIWOl6t6fTD+Iu7nDX/+U8LZ+4/mjkTf/YbznWdzGe1M1UHpXM4EudqeKOdyqc2Ggq8k3ExPhieVXIdRifjzyez8CpYYNzTZgeOmwThIv5lEiZ/zw7TFcu2VEt9dLIIPf+CtXTy6uyV+dPcll+fPdXfnF/dvTl78Uc26jdO4kT1Uecf5kOziv3IDReJv0j4hQ0WQ8XQTOtPN3/U0cJVlLXBT8NGu+uuYI3Fw/Wu/874AZ3/nXG2dfic5bJ+MI6ZhrNZeIt2619j/YbsPPWwaKRoMFhcHd4gGvk8DJNrH2OMr87ukKsg3nafd3eVN/AZgxgnuLasyRiXK/Lrd3jtgexuNGsCnb1doJ+f+fPL215NYjcKlvwuO2RA1hpCw2F05SyCX52DG0ZDMdrjBueQDvIG0JB/g1v9oJbSFj4Pl1Fw47h3bBgj3/WDG1yjw1uvNYXGk7ulj4fvhzDBBrvOFzeBf3uRfbxcTWaByy5lkPgXjjdn5mPqzGL/t6qFePf04uPt2Zvnysu3z2P9ze0z6wfWtHN1wSwcmi9ME+62Kz+5gDGYB0kQX+NvcweNorV0z2fM1EtPXr6QcmvmRc40yc4K2zafrxJnMkOrvB+PTpaRn6lC8ZEb+U6CAXNw3Ikqq8ZAtgeKeS5rY1Udq6P/Yt916XXso2lsH/714+vWljSF7ZWJxfiXHmQtbWuo2rCSumaoaJ5b83x7bdQfV0f93dXP7x+X4/jk+ePXPz59+ebH07mHT7nIZEaWS5pPgkCCcMaVgASheI0YkiAcIAjZq14uHon/KRnOneijhxcD2CC8JyRMDNLXZ5+ZpTj4FZ8oiiYreOX0gis/ZiY7vnZUwxxbI386VX3bGU09xfJtXTN9TXcmzsj1NVmVTcWwTFufmrpl6CPLsvWJ6Su67rnGyLM0ZjzZqfkbvBuuFmh69OikWxxSk75FHFRm9idReMv0sjjF+tvrzq/u+fHZ+/twzXL/9qh/UVFqoqJ0isq7i1JUUj9sFixWnwZONDf1ARfp01+DJWlM7sxWLjw5HXDNSGO4m0Iak/kvsBT9aQyeMDgo3BEcplaoVWVUTbNGhmZt6ozr2UwzVMudjkzHmkx9xdFGjqG7imP66tRQp4qpmObUsk1l5GsQF0WZTm156ru6pjAhq+uMYvQiNNwLESU0XdZchO6wqbqqMwMtLieZ3m04M8+adecTqc6WmUJSHVKdfG6XVOerq46lj0wTclD3bmzbMpjEmCPZsn1Zcb2J4zq+ahmuO3EgSZozlTXX9ycT1zBlz5y4mj3yTE3VXFvz5AbVMTX525KddWMuQnTYMFVFBwPUITrvBnXRmTtuGJOzQyssxepk92IITaiRs1NZrPl6zo5tYuEDr9h12XGmruEY2mSkOY6uq6o8UnVXt2XbdlTFlj13qjrqyHEc2dInhqNNPNtyptZIVwxFNa2mSTXV/lZUp9mai9Ado6Y7eAHo0J33bAE7WwFL3bK0pwHWzmc0ydYZGEHuDrk75O70urJfW8jZZ5LNsLBqbTXojikb7mhqTR1dHdnTiT1xPdnVRqaiTWx7JGv6dCLr+sQ2/JExVTXP8kw=\",\"OEJTy3M1a6KbkyZ359uSnboxFyE7LKyq6u7o3bLzpC47t8ECU5nxgGbZtsXjkeyQ7JDsHIvsyCNTV/WGtZ2pDC/HnYwmlm+otjWZqNbEnDimMnVN2ZxgLUfTlalpep4jTyaObqpT3Z4qE131JqrGgxQ21nbkfqII7mFxp9mcixAerSY8WrfwsPjAzN95+eLJ09fvn+IDClLj0fAUQFBbMKc5NZpTu485tdBN/GQQJ4gensMctUYSKLLZoDSYMzOmvj21NN+U3anm24pnqYhXY6EFqj8aKb7umZbrTwxP03TZnDqKiQUfrO54PoSpQWnw9n7s0Wq59RahKWZNU8xuTWESkmnKuxQTOk0+sbB20hXSldVk82WddIV0RZSu8ODn5SxlW1qVREfsbX2BhkULKPZUn04xS6a6nqO42tTyfcVwJhPPm5rGxLF9feTrk5EyMlXIi+5i6WbKYtNkg80AbXgs/USjCQ17rprs3/7O6KFo4szqQOTupGh2fElFIjzwoAaz48sGJ6F3h2D1Bw8eSM+CT773YfFhIUkD6dkqYtSeFMyXUXjjS/6nZRglsbSKgfRJ+JM0cCRn4UmDx1KYwnFSEkqLUJqFiyscGCfhUgLWNHeSFdCmOymYSn4UhVEsORHaW/BgdlBP3ql0fh3EEhjZGI+yFPlxOLvxYymI4xX+uQVTK80YciUxQlYKp9KLs1cSpnenwdUqSvm5U9bvk170W9VNcEumzSLM+4NyszZFQbnrzQuBcq38RSYfH4JyOQ9Mc6g0h7r5WkYM1gHx8ZUgg3UoN5Lnv8IM1aFcZpr2hHLZIb1Bucq5bIxVeaya7VBuvk/KZrVBuUVLtjAoFxE1qqIV1tzOtjvc0v8aeMyLzdxSgnIpdJ0LH8UQ7pNggwThAEH4cihXHalYxam7pzr4qOlIdhGmgTBBy9JdhK97E1+Dh6phhlN3sNqGGHVj6ioTBbHqI0M3ENuB6EFbQfB6g3uKszRPcxaGX95BHPg+YlgpSySUm4pIOdeZbXeLCvPy1+IF61CuRVBuNcMUranRmlpX/ihK/PD1oFxFt5p0ZoRIDVszHFmdGIY8wlyoMfKRnQyslO9bhmaMVFdVVW9kmxb2mU4s03EN2ZblkYOEEA06gxQT3TqjctehOfnDuhMiSmeamdzUmPcyRVckGEplpgxTz7a7ZYdFeTTITh4tSKKzlsCORIdEh0SnkvniWKIFNUuzVRPRFXXnRnGmOvwUlTk4I28kTzzVsNyJ59quNtE0z9MMRAtqjucZcHo0BHLIhqn7uolcELqnThtEZ6tzc1yis27KRUhOmdMulZy1XKO1NBCYPmMAbwMZVaYfItEh0enIDEvphyj9UDV9KsxJf7Np+5BRmo0AdBX5B+qiY7mI3TA8sLdTRfEA3SKSfTRhGYmQFcJREKCOgA/NnnqmbFkOmClZVxVz4ssIAPHNKUvPWg/4+GZEpw7kivN0SjIqlZ0uMgqyw1SqQXZKhotkh2SHZKeaA797UYsWcb6O7BgW1nHUBl/HniLVHbwaU58oU3miTxGibmtISKR6tj9yR9YUm46vYR1H82XL9xxklHCtqaIZEyQoaso/9M1MsNWzK4iTnTLpXSo7XUnvIDtsPm5NduoEF8kOyQ7JDslOSx0U1N5YKxbx1bwdeYSJMb0hD4RuItUdoqgUzbVsx0NIgG1AiRAxYGmjiaqDojI01xypI0WGdtmuraqOp6uWDu/JN5pkpxXHXQ8J+/rrOs3GXMQkW5njO5WdrhzfkB0WGUg4LgahuwYTxStTvDLFK9+XxBwdjttKUe2lM0Lj1MTguKmGlCkesu0=\",\"7lgBJkGE41JxukoURPcMEeG4hOMeIY6LnNua7TkjJKRzLAUEn+9OXB/UoKlMUDACFYmsqWGYClKpylNVVgxEC0xNZLCbmqOpzOZ/xKzOCNURoTQuA2h6pXFZg2007tMd6NsvQm97xGY1faRZus5qt/aGzeZtCsJma80LwWaLudP8ZITNEjabV/yluA6K6+gvrqMNm3194b16xyZRa7VsmWnaE5vlbwK91LIdDVSd1bLF/xVegbZhZrO6D0drG7HZ6l66KGx2ZFiIyh8Vlcnz7Xb38Sf3xatKqDlhszQvSdgsSw25V112irjoL+Jij1q2qqE2ZHVC8Lhh27pjeObIMKaKhYg/X5Ud13SUkeMqsqW5oJhQ5VZBKQ7NcycI2lA8G7mdLFN2mDWsu5FKc5Tfhk3fog7c7ovhmUYCudlURXg9Ep7wPN/uVpVKMoZm1GpE3Cxxs1GcJeHdXOyhSUqapBQ1SblXNLkuy5bcUFYQEeLTkYaJSNf2MS050kaaDmhWt21b1iyH/2sCn53qSMng2I5tuI4zsTG3ibSDyNrQIDTN5Z321RlDpM50GfNe4ysymSniK/LtbtnZCOtL0zXksBWJDgX1UVAfBfUde1CfZhmWOWqIJZ+CpkWKBuT5GSGvOUrYqvZ0pPuOY+pTD/U2FE/1p6zKumGgEgfUyTVdw/AhRsBpkWaoQXQUlhu3IV3D0crOujEXITpFLdtMdDpq2bIZtI0cQXXYimSHZIdkh2Tn6GXHhg+jwwupk7Oqa2PCTPVRq9bxLGsqTxUf1WtNzVEMfzJVTIbHTmVzhB1s10QeIcRtGIqlWLrlK3ZTLrrmGL8jFJ1mYy5Cdoq4v0x2Oko7Mdlh61yd5CzJDskOyQ7JzrHLjmHpwJDAtNZlx3esEZRE8VBLXVM8V/E1VeZyY1mG4zv6BHs4qFw7cbGC48pIIuTr6kRWoU7uVGkKCWwmZ/eVHb7QL2opp7kueWrMBcjOqMiImsULdFR/YrKzkSeoDluR7JDskOyQ7By77MgjGLxRg7czmvg6nBxjpBuoA+WZ7tTDcg4WeSwNv7u+b+u+aU0MbaTa8IoQcOAgfxB4Wg3VbOEVNUyyGc0VBvfVnXtY2mm25iJ0p4g6znSnI2MD050K5kSVbC9WpDGkMaQxX1tjjg6dxct7D2s5QkPVhKCzmYYUJYPy7e5wgUryOapkSykZqGIQhT53o9MiUzJ8eSVby9VU1bCtke8aljXRlYmmTF3EpE01pAeaKq5ijWRMomm2r6qmqqim6VqKgxprrjM1J01RAai7fuw6IhSdZc5Jr+gsa7ANnZ2FV9LUT9xr1Ka9RXHZpe+iiCwrYMv+8vjtC3z2T9SZTaRZMA8S6TtFWrLytT5qTnnfp8VwyzZYxVu2lTjBTPL8qbOaJazu7eOXL6WZf+PPYmlyl/+hR7hWNWX832YheL3BtXmbguDaWvNC4NpiejU/GcG1BNcSXIuK2avJZtg/sVQHsFStcK3/5s83MMt1uJaZpj3hWj652Qtcaw4U61yWx7I1VnnB+wZ8qrpPO1xb3YvPkKbyczL+5fPJ+jzZ7lXtUQ7ed2I/zoRniLhLW9FGoyK7eb7d7mC+vfv4eoXeZDEaBNcSXEtwLcG1W2oSC/cw5070kRGusExx4iT+yRiWdxY6nu+xj4Jf8YmCJEsWXMB6QMZkgmUudTRyNN/w4GHKCNyYIk/TdDLxTXuisJKB9sSbGrYha7KrGhNbn1pYEhtZk5E95QXNcWp2tgs3XC0SnKp5xnLDpm9RB4ErY6ZAuDZTkWIpLN/uVpVPpao081gmwbUE1xJcu3NGRPI6DvA=\",\"OmqFz/eCazVQsgrwmrrQuLrpI7jPxeSlAZ7JMmzHRRH0keujPhMiAS3FncgjFxWckLncRJEmw5r6pml5ju06vtVUqqk5efm+OiMw8s8cdhnzXiMwMpkpitLm292yw1zIjqK0JDoUk0ExGRST8bVjMrBs0+XboP4Fyl0oDRkdTESWTx3Xd01/OkV2oKmmGKrhIivQRENWWsfUpgZqaqCOhibbyhRBgLKNrLQuqgeigJMzafBuUGCwcSHtaGUnh2tTYy5CdIr1kEx0OsLN2QzabV106jwWyQ7JDskOyc7Ry449UuxRg6+jTsDOqqqH6n8I2/Acd6L41tSegJ6VPUiRB6AWxQFZtgfMu6EQuqxqyGuHLHYGWCeHzdrVJ9W0Zrr2CFWn2ZqL0J0iLWqmOwj8r6yXPb74eHv25rny8u3zWGe682uz7pR1aUl3SHdId0h3jl13QNcayBO0OcemaoqpaxNF83Rt5E51z1Z1qI+qoxLgdDoyHE9WRxNW03aEKTZPm9ioiK44I8XRNOQeYpNHdd3pZy3nHubY6nVpxbk7RUR6JjtYVeuSnbu67NR5LJIdkh2SHZKdY5cd0LW6aUMQ6ks7IwQEoNCT4aEIrTmyJ646hdJYqm74vmLKOuLYUaPHGYHBtT3dQVCB6+jy1DFdbeK7SqPsNCfoPkJ3p9mai3B3imRCme50JBNi7k5S6g7RtUTXdlMwlJubcnPfR27uo6Nr+9EZobFqQujaTEOKGhD5drcvE5eaQnQt0bVE1xJd2/1eITz2eTlzgs7AZ5YLu+6wYO7LgCOiKp5lupgKm2qWNkLcmubJU19HYIBvA7xVHB04LQoLyTKCoQ2ERRtwZyYjvyksoKWi0L4Oi1AhEYrXsiCAXvFa1mCG1/aItKJaFEJFVAb99Ia05m0KQlprzQtBWou4wfxkhLQS0kpIKyGtye+Ms2GvKt6GtL766BqvYJbrSCszTXsirXxGsRekVR/Io3NVA8861uwWpLWyj66xfRrrxVb34pVnRSCtuq5ZKDNSWPN8u92re/Px3esz9IaQ1pDd6hgJcuvIrSO37iu7dTsirYpdib5brGazzQCG5mjtDWvcAKNW9+HpDMSkBzcEwqiZ/S8C5fLtbj14XupBM79kEIxKMCrBqASjtvhHvfoLB8KoSPJSTgA2S0RzZrx9JYK/+ouSiC473GusQaYQRYxbvt2tGD82K0aOHpFeUIQbRbhRhNuxR7iBIzVR8HubXihGP07FvSnGuh0WoBdWUV811QsLbllbTDSbcXpR14s6NESKQYpBikGKcfSKAf4TKWu2Kcbom3Exmg2xAMkYFRnSMhejo1gQk4xnzZJR0pskGSQZJBkkGccuGaA39ZGx1cloBi+PcFKqDl6mdliEYhR5ZjLF6MgzwxTjaV0x6qgOKQYpBikGKcaxKwYDL5UqeNm8jKHIWOloKPFzhJrRbIlFaEYBTWaa0QFNMs34odQMgiYJmuyOgiFokqDJ44Umm0WiuWr1vhLBA1hFrXUL4R0z818Ue8m3u9cpnpRyQLwjBcZSYCwFxna/EoiMfNq/mmizBPQzsyQ0IlYoqcjoiF5JRdZgWyHQDx8e6LY+lp5FoRdKT16+4AVBl1GIcp+zOymYL8MIlUFjNwqWiYQwrzmKgC6dCGV8pGkw82NpFQeLK+mSR4Dl+6WHSYPHl6e9spGaqej9lvtU5LRNYWzkWvNC2MjinSH/LsRGEhtJbGRL7C8V3jmg8E4rGxl4d/8Blamzkcw07clGskN6YyP1c0Ud6/bY4HkLmhmaYh+ri40s9uKpQoWwkZqB7HRKkfFGz7Y7PMCrwS0=\",\"Gy5iI4mN3H2VhGYFaVZQ1KwgdwF3YyMV29oKvrROBq5b4y12XWByZ10kG5na/3KBKNvu1gPm6zVUTHOiuakPtFP5VCc2kthIYiOJjWzxj0TOEO5ZqNMy1a2Ry835MbFetJdEjMStF+ktNTZTO9xvSEGqEGUYWrbdrRgMpWxQjJzJIb2gIDQKQtvdvaL5pQPmlw5h6S3DsLSt6VZaF5eOUy/WrbAItShJ+lQtOqrFvMF806CuFnUgh/SC9IL0gvTi2IOWNdu0DWPrFBQ4mOaQ5WPTi2Y7LEIxSjAyVYwuMBKKwZJ7rfkXdSCHFIMUgxSDFOPYFQNgpGaNts5IYYceFIMvRouJYM5npJrtsAjFKKOaU8XAuk5r9hUoBpvAWlOMOo5DikGKQYpBinHsigEwEhWPtypGa/KVY/Mxmu2wCMVQIAGBdzJWsygo+GldisEWyTPFICySsMhuBoICoCgASlQAVHWF+8tqSTYzMd9AJJQYLDJ1GMqCIdl2txywGapMDgiLJCySsEjCIrtfCUQGPfWFRbYmT9nLSxAaDCsUi2STSL1ikazBChb55NpZXPke4xUlaSD9vPQY45iEDHr0wsEsmEg8fpbt8ODBA+lZ8Kncm2GUo1E7RrlwZysPsGRyjSYjZxFPw2juJHgRK9DKMJImYXItXb4P3cCZSW+j8Cbw/Eh67iy8Gf59HXr+pYQN6fKlf+W4d1LnniAv2fdgPbPU1p5dh4swSvv1+s2HDxdv3735j/+U/MVNEIWLub9IpBsnCpzJzJeCheR4XsA7jWF5fn7+tjiA9Yp98D7/pHp2eyy9ctw376VJsEBjGAYn8nPOlH1HT8JwpN/+xSLxZ/xLPn73ytSxp3sdJL6brCI/rjRqy2PpZbBYfcr2403f8UZvw+hjLKGT6d+j1WLBCFV8kDZ57UTeLXrQL5qqqrqsMninx7KdaZvC0NS15sWgqYPCkVcwOmyECE4lOJXg1JbgawoePCB4sBVOvbbe/A2GeQNO5cZpXzyVH7QPoJpEK79tSVA7V5WxYo51nq2imWMq9uGvbm21O4u9dHF8qqaahllxxdPtLlf8tTFDn4lPJT5198Uqmp6l6VlR07P78Km6jHU5L7jy4+Rk3Dwr2wofrVvjLXadW2xBoR4DRSihyhWgrN6ppdvdirAsFaG5apw+UIhRJUaVGFViVFvcJJHTtfsyqsp9yQRPYSNOJrptcc8xHkwnRmVNNq4bI7Bb7TEer41/NutGQUiRaqwoKpCiAnd3tGiy6YDJpsNIVVPdXsWzH+fiHlWjbokFaIZZYY+4r9HJHr02FnXN2KCkSDVINWJSDVKNY48lZ7yqud3XaI0l32tK6l5Uo80Wi9CNSpYDrhudWQ5eG2GzbpTFPGmOiqLMu0PKaBmDljFELWPsM0fFynnKCt6Tu5cyWvPi7KUbIqMLsZSRzlFtcKvZO7wI3aiQq1w3OsnV18bHum5sEFPkb5C/Qf5GQP7GsfsbYFfVHfKptYJJe+nGvfgbbbZYhG5UsjZz3egq63n12vhHqRvEr5JnQZ7FkhRi+LUVok9+tZ/FDMGRUoIIVi4AlbIu6Xb3YndQCgIRrESwEsFKBGv3S4HIkKi+CFYE+DRnRtvLVxAsAmIZVk6P9Eux8ia7yntax8xfpjSt9LdrJ/l9LBUM7kNpsrpCgdFPgEUnd9K/38Tutb+agIIFhXqdJMsYBqESHxmF7kfXiW78KJskdGfBcLmazYa6rXxYPJSWwdKfBQv/4NZU1mO0+PAZWs86PAuvHj4c79wvWHNUUPWHN5wnHsinp6fZr+xSMuiWTZ1fuOFqgdBzpRc=\",\"/1SVbdtWVYM5pr0RqnmbggjVWvOCCNUiDDE/HRGqRKgSodoSek1BgwcEDbYTqmcho2g2CVVmnPYmVNlB/RGqsjZWUEFV6yJUs322EKrZXgIJVdlWLKOyZpdud7ja05/nb0pX+8nzx69/fPryzY+ncw+fzpyJzzgc/LpazkIHyThOxp9PoPbBAh+vz8/8guQdf8eeLGuhrli2pVrIdVBe8Vdnr8yf5rb8+uyp/ub86u7N2Ys/Mi2+cXB9a1Oe6YdxtkjCXvyzcFNumIPFUDE00/rTzR/ZV72KsjbYmXlf18LAnT2m0nAw+drka5Ov/ZV97R0rqCqasS2so2PetWqN2wjV6j6i0CNZKKHKFaAS/ZdudyvC+1IRqlRU7q3BfSdxaPDBEZUU1xYtME7TcDYLbxFhXde4PXRpWDRSNIiMToc3iEY+D5Fzy4cAQ2R/Y2oaxMlBXaW4P4r7O4a4P81CtJqJ8kXdcX/9CITQuD95rYJq1Qr3MjOWzoYNkWmca0Mlm0G63a0V581aUam3jfk9Ugx4JqQYLVMqpBikGMegGKqpYYVgq2LA52hbxdvDpbhHxdi0xQJ0w6xkM2C6YXZlM8Cs08913Uij2snHoAkomoCiCaivNwG1D1vEmVQbIeDdPkZHjPixKcamFRahFZXqRlwruqobQSv+WtcKRLIPSClIKUgpSCm+DaVglfBUY+tyxTekFHUbLEAnjEquZT4XhfFrzZAGnXhb6gRRREQRdVsGmnWiWaf7mHXqkyLqRx6EBpDLQ0EUEReASvqzdLtbEN6VgkAUEbkL5C6Qu9D9UvCNU0R7zCYJzTggDwVTRGyxoWeKiDX5BdXwBpyHoXp4O9TDS8EhVA7chJ3S+LuGYoMD5VBgyRox/Kn9BOrBJ7B6JqK0kodiN6UoHspQDHVk9VqxT87aFMVDrTcvhIcqEpfk34VoKKKhiIZqCd0hGkoEDfVm/oJBOXUaipmmPVkodsg+JNTUmcXNxfq0gaKcq+pYtcaK3IJCVffhuFRjsb7qXrzsXxqAeDL+5XM3uhP5yzAeNpLOkT/zndiPM+EZqpppqrZmFwuN+XbHfMGP/1QrE8iEQhEKxYWv22GkWWSaRRY1i7xHsT55JG/NcNucGX3DGjegUBv7iEGhNIEgVGb/iwXFfLtbD1qC21noiUZB7VSij0r0UYm+Fs9I5EzyPiGKKrLYyurWSq4qQvAaoto3LP8WdeBv/aLUoc6ipia417iTTBaKDAr5drdMtPCyZdw9iQVV5qMaS5Tz/GtntE05zDhxEh9AYpbThWV6iYNf8YmqGDIg0K0EVHMYytFqRd0Oi1CMIr1tphhrqW/ePb74eHv25rny8u3zWH+DiaafMOYLZ86uQrWmBzkW8xnFLdKM0z6pMWgJ4oAliAOquKqWrkIutrJPzUlvj1AsSvRJnGNRrC5nMtFVFgMyUYlfTGUiD7onh4IcCnIoyKE4codCsU1DsxTU1usGZI1vRiTWDbAIT6LIo5BJRFceBUhEJXsnMU/kO5DvQL5DPQnh74rwtftalBDPPO3rP/BAI1ELE0KIp9T8W0U6tny7eynidTmxRMQTEU8UwETEU/crgUhJ6KtuEkKbelibFioBQnknNmvUK+3EGtyfddLaSSdUWHrGaxUFcbxi/yySKPRWru8xusaR2F22SKS3SDj8BjWIHns3zoL98YXHiv0kd9KTWbjysBsP45W+U8yRPjqVpXAhqSPpmT+RVFk1vpdurwP3WlpG/g2Ow/HPcJZQwtzYXHLDCGdJZneS5yd+NA8WOJmE3MbYRvGCO4bRSGyqVAqn0qXLzncpOQtPmqE=\",\"nQSNOMFsFfG+86Mu+Ywbml0spNi58dOdq586HlqAhZ2jlRhd8xdZf26dWHKSxJ8vE94HtBL5WHOTkGP5JnB9yXF5bSMchOgRKXbDJc6boASUhLJI0iLEvzfojjOZ+aw7zkLyFzdBFC7Ylzhll+GkF9dTlXXL0rWeiyJlbYqCgNabFwIBFat5+fgQBEQQEEFALaFutAJ3wApca0mk1x/nP0Cm6xAQM017QkDskB4hIFkda+pYVrogoGwfnmmkHQLK9hIIAWm6hoAWdILVBgIUlG53uNDPZo8rLjRBQAQBEQTESo3uU0VrSIJwgCDUQjL2gYAUa3s4RrsrnVnjtjp3fMa1uo+Y2VRVKATE7L9SgYDS7W496ICAVIKACAIiCIggoBbPSOTk6p4Q0MjeTog2V7bYMPxtDFD1pV+UONQZoNQC9zIZltdBSr0EpRKqx1WiK1QPXsNGqB6Kra8+DcrYc9IKCtmjkD0K2TvykD3GACnaaKsj0Vw372i1om6HRShGhQHiitHFAEExOhgg0grSCtIK0opj1wowQLI12pp55pvxK0oESJxfUYnv5irRFd8NlajEd68jQKQRpBGkEaQRR64RDAFSRzbSy3QjQB3ZyfZYmBBY2kLNqnDnBJAwhZCt2no1hqa16hEU4hV2z3IJEAFEBFB3uC/lq6R8laLyVVZXJO6JANpDGgSmJlPF1DzKFiIqOYy5w9BVLBVyUMlhTAQQEUBEAFH0UvcrgchF6r4IIEyltxFAxyIBQgkgtrTQKwHEGtyfAOqodUQE0L0SQJI0kH5eeoCKPMY3+QuAVG4AiogTRTer2cKPnEkwCxJ82B8wpNjWSIVDz0Kq03iJmsNVixPdpWRD0aYYYKjevBBgKH9HK05GwBABQwQMtYTFUXz4AfHhbcDQS/XZmyZgiJmmPYEhdkg/wJA6kE0WNG6YY9lsAYaq+1itwFB1r5GoqkGqOVIR+1JMwObb7ROwr6903yknYAkYImCIgCEChrZUjRLucs+d6KMX3i5gmVqzfSuybWyP82NRbA2u94Y5bggK39hHTFC4IpAYSgVAL2LB8+1uQZiWglCPV1eIGCJiiIghIoZaXCORyrAXMWRpeBWG7e+O2mB79KAO/LVflDo0m+BeA8AzWShC+/Ltbplwm2WiDFUnsaAQPwrxoxC/Iw/xUxVT2QUZQhrwb0kr6nZYhGIUyFCmGB3IEJtp8uuKUQask1aQVpBWkFYcu1aotm4Z5vYSc83x4BtTSlumne7BsaibYAEyoRUZzLIFCQxfW0Q4k4lJXSbymHUSCRIJEgkSiSMXCcUeGchLvHX2yWxOQnCEIrFugAVIhF5EiWeeREeUOJMIVvSVoCEMAkWIU4Q4RYh/vQhxUdBQc86BfaWBRxqJWpgQUjYo8xBG6DfPeZxvd3sM7GtmckDQEEkCSQJJwteThL6gIVZ3tIcFB6EaIJQaYj5Br9QQazCjhnpkSiyUiNUNmzXeG1OStymIKak1L4QpyaMJkNU7HR9iSogpIaakJXCKmBIBTMlf7FfzC5jlehEaZpr2ZErYIT0wJTqqEAxk41xVxooylrk219eAavvYzUxJbS++UpTKz8n4l88nq7WVgi/AGvN00rKumYZc1nHNt9sdslcvZ/I1epM5ZMSU0CQdMSXElHwjTIk+wtRbd9RwQz3XJmu8i10XMzcnC0RKMvtfTNDl29160IGUyISUEFJCSAkhJS2e0bEgJZo+UhVd3yYOioropvq03bHJQ50pSW1wr+v6qS7YlVLEzI+wOyKEmd/wsfQbqn0sY5lJLSgEjELAKATsyEPAVFXVESmM5PjdrgQ=\",\"K8u1RSz4/M/X9CW6DLEIySgwxExCOioMMMkI6pJRRjSTWJBYkFiQWBy7WGiGpdujrVCJIsMUblELvg7w9dWiboNF6EQRMpzpREfIMNOJf9R1Ig9qJpUglSCVIJU4dpWQNVu2jK1UidKU1OQ4J6DWLbAAjbBMGH0eR5wtUyCkro08ZBpRAdSpFg3VoumOIaVaNFSL5lurRdOUDvHYtEEIV5LZ/yI1br7drQdXpc9AXAlxJcSVEFfS/U4gcrG6N67kG4hfEsqVsAWGXrkS1uD+1WhkxqCwQijPgk+ofOIsPCmYL6Pwxp/7iySWkpBthxF+ZX/zP/Hfx+wYSUr/mx/tYQ8piOOVnxZQmQYzX1o6yXUshQspufalvwULJFSOpRvMdOC1TQqn0rMo9EL80UmkWyeWXGcVB4sryY+iMOLH5Wf30Cw6w5rxgunUj1CrBR2e+Mmt7y+KplknXwaL1SepPP1p2c+HDx/+8O7p47+8eP0jfh0X5V9enL3Kvxs7y8SXpmE0dxJWGoadMnbmvoT+Ldins2LXYBEnvuOxL4I/Rs6thGoyjjS5k5arJGFfhB1cfB4s0LYjsSBzKZz8w3eTU+n8OoilYOHOVh7O5V47i6v8OBa7jDGY8kaykWe9u3Zu0Jm0mf/57/8n8Ob/89//7yMpXrnXrBv4KL5buKf4/PQfcbjAH3GCoqP5n7M/PcLfpDDy/Ig1HfnTGbqFM6JXvDN+ZfQee6yP4TJhF6+4M9hlx70SJHcSVunm6Bm7hLj2/Arwj9gXmK5m+cBJ6UVmnw6m0nTmXLFOsE03XEwDbPFbDlvzOS5oRw9w7/iLG3z1SYwOrHjH8P+sA1mvKhd3mN1Oj/jdjIskzcKrwGVXG8O68GZs7INEctBXdInfnYOXwaS8g+pjkF6XrF1+HD8dGw9WSigJWcnb+qBUvr/Dv397+9mtgUuEmy/J7xRp7icOv9fQy8r3236n5/cR+8bOFXvGcef4mNBnv7BBuXGiwJnMeN/zW42N52rmRLiVcZVwp2CspOVsFeFZ4Hdz+szMw4hfwjjA3bbAE83qKIX8iPy038U+vycwrLNgIr19x4eeHxgs0mcuu4aVW/D7DUMjTVZXrFYUDmO3Df8i0gynze8Z6TZczTx276MbYfRRCtLHKN3zGs/sIpRYWvcVKjsxW1axYpXGQ2eVXKt8XHAn4mAYueVyFrgOu9VQKYr1IP1u+BP/vqw/t1HInn02Mrg+uMTlvd91tn+Eq2jh3xU2j7VefgV2a+Ir5yaRbab30eCsdg+9T9BhJ/KCX9Ep/hT6n5LIcfnjgWvpolu4lWIcjx3Qw/lqlgRLZq5nDrOq3zHTM7uTYjcKlvwOgUHBCCyXOGt6n3C7wb5ZssIQvH3H7qKIGfbvK4/rO38OJcGDFoVXkR8zQ+exsWO2nV33tP1Hkh/fFPddqjP4IL0rUZmL7QWLnFmDOPsGGOc7rhdoP1ORUFr46IKU+NE8WKCuV6UrL1JVg4mtmhh+k6NtdsNXLBrr5k3grXB7s+GDzDjsNJmM8RHNLy673Gy08NUKE4v9vABvYfieGMMkWrl8kL5zZsl1uLq6bvwrLgdsGOwH/0boluen3wO307WfPna5GEtXs3ACW3PHzAJ2/bgIb7FXAAGIfGcGg1vsmYTsgnxYnPQys6mMbF2WLcXAy0ZvnGnepiDOtNZ875ypeqqcFpxpfjLiTIkzJc60JZqaOFMRnGn8Hz/cwCxXOdPcNO3BmeaH9MOZygNFPlfssayPdaMlKqS6D2dRl6sJXuWufe/CSU7GJ6qsYna4uhevgiaAM0XlSdVQbLNSiTLdbp8=\",\"oH0pv/sbE0PiTMPkd8YZRoJmaGmGlmZov/IM7W61y0YI5tgWHN4cG75hsxui/Tb26Z8z5WIljjPN9SDnh4rtbj1g8R6ZHlTD1nlniTMlzpQ4U+JMWzwjkUt3+5Qu02RVs7WtSQgUvXkZb8P0f015aLbBvUyHZflpcl3IS1wW2906wdIXNOhEypmSWsxnFPzX/RpJwX8U/HcfwX+IU4Cpai2CrMqWaSk20JctnGlDocvazE5bLrINQRHlS1TFom6IRUhGsXCQTT11cKZsqkmvS0bKOJFYkFjMt+S2IrEgsTgGsUBhGkU2tqawYc5HA2a6IQRf37Oom2ABMmHkxcsyz8LoKF7GZII5ImueBYOcSCRIJEgkhrU0tN0eFq1UH7BSjUgrFgZ4kTWxx/wTzJyhajpAyW6PwmjORXCEIrFugEVIRE4V5RKB4p9tlCmTCLamkUkEUaY00dRtBsl3IN/hPnyH0E38ZICIWd+Zd804KbIJ87ZFG47ffxABmebmP8+NXGx3ywELecrkgCBTCmGiECYKYep+JRC5Ut0XZAqNOPYpJGGMaR7H2xtjmje4H2OqnqqnnDF98OABZ0y9HDj98OGBrhvjjN1hAAsooaUfMewIgCPww3CxAEPDmCX8JeVwGIjFuBgXPOpj78YByuRJL7wM9HsyC1fs78tZeMfwVQ7p9Eq/mKo8Gmn90i9Zm6Lol/XmBdAv8qk5KCLkRtnpiH8h/oX4l5YoL5pVPGBWsTKp9fTi4+3Zm+fKy7fPY/0vVy89tu6xzr/kxmkvAiY/aB8GBpSn3/S6IdsDVTmXlbGmjw21GYFZ24djMk0IzNpeujAERrMNQ9bznHWKnW13uI//0M+Zt04IDCEwuyfwpClFmlIUNaXI/ccdERhF2xq31ojAbFrjzUiEzX1EhK1xtRIJwaQKUK4vZdvdihDWQxCQWmX1CUEIvLuEwRAGQxgMYTAtDpLIycU9whBUTTZsU9u+1NSPQvA3f3EKsc7BlGa432AELg5GGdacbXeLxT+bxSIPwCbJoMg1ilyjyLWuAhnHIhmyjXQlylasvjG6edNf2OJT3KNibNpiEbpRZl5JdaOjnM5LTDtFdd3IY7FJMUgxSDFIMb4FxVBl2TDlrYXXEAy9GcxwnIqxaYUFaIVeMjHphFQXEwOtYAhrAxNDSkFKQUpBSvENKAVCeS3T1JBypTvyubm+znFKRcrFCJ2M0lm4Fqu/lq9lw/dqJWMgFLNSKIiMITKmOwyWlrFpGVvUMnZ1paJPMqaf1QoegSRutUIMG5N6CiUbk213C8KiFARiY4iNITaG2JjulwKRaxF9sTGN5PzePoJgERBIx+Qxvj3yMXmTBSEj/Q11zX4fS094IS2QLw+lH/1Ees+r6kg/x6gnJL1YSG94cZf0U5SauZP+fXntoOpMEqEITcTq7FwnyTLGU1cJGIlC96PrsIo7rMAUyim5s2C4RJ2hoa7rjLHB2R4+Y3WH0rOjzhUreLZrSzBySyfyhzdpwJZyenqa/cpQDwbXsPe+CzdcLZCjX+llfk8Z6YpmGRo7Q3/FZbI2ReE1680LwmuKZbF8hAivIbyG8JqW6DHCa0TgNf/5/v1HGOZNvIYZp73xGnZQT3iNbJ8r2tiwxmo7XlPu04XXlHuJw2uQMtsylXLtKtvu8ECdSTIpPdAnzx+//vHpyzc/ns49fDpzJj4LJcavK2CvDup4now/n7Cqlgt8nL4wDNLSf/EvkzD5O/Zkk6G6YiHlqIWUrOVc6KuzV+ZPc1t+ffZUf3N+dffm7MUfmRbfoNBkVJsJTD+MM+CDvQ9n6Z64YQ4WQ8XQTOs=\",\"Tzd/ZClLr6KsDXZm3teoGv+8T0ouHEwuKLmg5IJ+ZRd0R7xGVrcWEUAq0MbAhpo1bgyFq9l1UdORiki8hiuAWka+ZdvdisBsf0PtgNxbSzN2kzjUvWZMqceZF52LIgZyGs5mIYrtxnWNWwa7A41FI0WDqJV7eINo5POQ11C+YE/8b0xNUef4oK7SohUtWt3HotW2ugHAa0bq9iozbZFvRyUQm3SNwiHHXmbGijozqTawV+o0oCHb7taKq2atqEZ0p30ld2JznpUUA2U9IZmQnM/8n4vAYyKEaiBRhBKtX+7JDbMmIG+3Cyjb52HkL0Pe9mqSVobnc8yHnKHaEBrGzJCzCH510snrAxqmKaYDppi+PC+0CrpGUWQEMHRHwLXRNTV34eu6FE2lZtgSkjjdKOuTpbqBcWwNhMOs07SuG9W4blKMtSmsysocKQYpRu5c/q5YpCHF+DqKAbpGs0Zby818E5NQqWJsWmERPkZZ8zjVirWFgnePq5nXXkIr/LpWlIHdpBSkFF10BfkWNBt1BLNRjK7RR+pWcl/5hqaj6kZYgFAoZabIdCkbw9PlVPxnKRRE1xBd072KSdJA0nAf0tAnXfNNeBJi6JrUUyhzf2Xb3YLgloJAdA2FNlFoE4U2db8UfAt0TRtieVRL1oLpGhbR1DNdw5rsomtQYEZiJWKCOSrG3PjSYLDikM105lxJ0zCSnr7/a8z36JG2UXunbeSStmHfWBRto1iWZpssmKA/2iZrUxRts968INqmeIEZZacj2oZoG6JtiLZJ2MJmr68frcVs3kYqS7i/Sdsw47Q3bcMO6oW2sQaqeS6bY80ey1pLMZvqPmZrMZvqXsJoGwicgindIrY63+7wSN/8h/6u9EiJtiHahmtft0tC85Q0TylqnnKPYjamrWxNI9ocGle1xpyQbAiN29hHFG0jC6RtMgUoMgDl292K8B+lImzGectUzIaK2VAxGypm0+Ig9eowHBA7DdpG0XQsz3fHTiO9aAOOuWH8twgEf/EXJxBtVrjXAIdMG4r0ofl2t1b8tVkrqrQNKQZFxFFE3O5oLcVOf53YadmyNUvZGjvdj0txj4qxaYtF6EZBaWa6gXFsDYzDrNPPdd2oxnmTYpBikGKQYqzncyrpomPxMRTbtlVra4WC5hi5o/QxNq2wCK0ogqgzregKooZW/K2uFWWgNykFKQUpBSnFkSsFaJuRZdtbZ6MUVID8Vqaj6kZYhFAUWGYmFF1YJoTifSkURNsQbUOr2PtkdKNpJzHTTuJpm309CaF1lOWhENomE4Aip0u+3T3LdF4KAtE2RNtQaBPRNt0vBSJnlvqqZYOX4B58BMEiIJi2YSG+PdM2rMmCtnkgPfY8VsPmw0KSBtKLjLCJV8tlGCUcrnFXcRLOpeXMSbA5lzwfGenvGL0SS98twsUAn1754TKWip2DX32PHcs//p41LUnpf9lJPnx4oKv2OD2zFC552j4pCaX8rNkZQ2eVXKsSKuDwc+GG9the4SRxUDwHuXMlx3X9mB360V/wvr44eyU9fvtCcp3ZLB7npyxPzjoykC4HA55JnxXXQdODwJP+UPz6b5fS+6XvBtM7ycm/+5vHlZ5I2B3dQHeww124iiQkOpTWOrvZF1bupzpw4VRib2HShxN3Fq68Dyds8D4gZXE6Zh9OTqX/ZE1nQ5H2TprjUkgTX0K4yDS4WiFRo+QAfJKWq8kscLOR4iAUvn94m44Ruh5GWXZEHOn5EvL2LxJ8ASQh5rt8OAmX/gJfaxqNA28+/vDhIToUu/j0FPWM/GynwQAnDGA5ksEqCrAHSgk5cz9BlaNgykY=\",\"Qrp2QGdVO5f3Pz9QwoHSd54/dVazZIwT/+E6jJN/G+Y3FwoWL9lYP/dnSz96l53ulCn6h5PvT8sLunYZq92S/lDdarqYRV9+fvciv5C3CPJJr2U24OtX/LvDO1x2/ZzduBPGseW3vusscMHikF1a9gzgrsQtdh2Fq6tryV+gWlS4YM+bdONEgTNBDan2W/vZuzdnby5QSOLF64snL188fX1+8eLsUtq4gzeellPpDapORQHMwYJVq/r9xkPy+6zD9ctQPeW7p2cv3j19cn6Bwb2U8gso/YzLXrEl9d60nrt6LWunX7MnmlHYE4xlOq4NFoWZB3bDST+/exnzDuE5WTca0nf+6dVps7Vjh7Jn5vEr/oyx1sIFimJIXjCd+hG7Qmev3/MzxEMvnMNMxd+3X6oBDM98wPvzh/w33LCs2YmDpw6dfCSx3oylP+QFvlzv4yn2PfU/OfPlzOdB7PM7fPJv6ZMaLmZ32dOYWkN0IcGX5LlRpciPA8+PmTFyKp1Ou8q+0xBDgmeZGQXehaWD5yL9dhivCDLA/pQ9v3h8h6nhmMNeNRnb+q0Ou9xxp+NvTTd7+wCmNx7G6+L5m/fn6yPXcEvlY9x4Iz18+PB1mPhj/Cs9xk3B5WXtKUXdtPQphWWKkTEXzyjGEdZuAYvIRhdw6jTAwynhScbhd7g5cDG4TWTixkWFPdnhwkVLzEhPme1MUE0u3R8XE0ZhlUhMHXD+zbYxyh8WDx48KGvPsWEfSD8vPSfhp8lD6CaSeqqcqgM5xVjZUQ1163BDhLMbdPkBniC0g5cBfOtgFiR3ZZ/v+C2Ju1G6vYZtcDyPPQQQx+yr/89//3+8vN1N7F77qwmTg71r22Xd7K22nVGytux9RxRrK9smovPZMl9/rG3WpijWdr15IaxtEVo5yk5GpC2RtkTatgSS03z0AfPRraTtq5eDpzDLddKWmaY9OVt2yD6U7RSv8n7b1IV8LssMs1WVdhyr2IejuNy3i6+Rk99BSdYTVVb1gYyZ8GIvXh4vlZ+T8S+fu4uwsVz88bCxymzkz3y888WZ8AwVayQrKtgCNM/LUuTbHVPRf/6vn+bYPSthRJgtYbaE2bIKz/uUQoQPdhXjIeKP6iFlMngDaMi/YfNnh7SUtvB5uETpase9Y8U8ahPIh7QufC56t6J2um1gxrmbomqNcFy3xs0U1fo+YigqQyRkm+pBCU5l2916sCj1oI53GYTYEmJLiC0hti2ekUhhwEIDlkz4tOhwe0E73TLUreWJRq0LlnupA3/rF6UOzSa435DGVBZYnqOq22B1y8Q/m2WiZLpILCgCniLgKQL+yCPgVdmybNWEtev2JFrp2uPUirodFqEYZfaeVEHAm7WStZhoWtYVo2S6SCtIK0grSCuOXSvA1Zqqsl0rvhmxqJtgETJRQrWpTHRBtZCJsC4TOc9FIkEiQSJBInHkIsGQWlO3thaws5qLU2ysFG9Zm7iH2ad1AyxCIkqcNpWILpwWEvGxlAjCaQmn7SZnKCk0JYUWlRS6uihxLzjtXpNNPNBI1MKEGJg2Nf8lTJttd08szUo5IJiWYFqCaSmAqfuVQOQ6dV8wbWv+5+ORAKEoLYta6hWkZQ1uwWhTRhZQDoN5LvnSO6jKKFgml4Bn5nMwQDnJV9JsnMdNjxgEl0OwqukhgMUuK2QbauExQJdhRP4n/mu6W8xQnMArcCzO9BQNDhbhABhqXG1pESYAdtzZCmToLJhETnRXtAWQJ20dcO9UYsDoDIgi/wrxqfQ+mAczJwLkBCYIGC6+ZYbegYZa25mV7kMfGcSbQ6cx0NG0gh8GiPch/UY=\",\"eRfQTX8BFtENGLCGk4fgzmLgp+y77QVBcbaIQVOoI1iizmyDU8es29cYxxnrGfuW6ddjEFPHdeMjX/l7Sr1mX6K4vBm7Vl5dnJWdBpf+TpqsrmIgeWDzUrA5PTEGPIkcTpSdSs/A42Wo3yN2NiBot+w/rh9xCNplAdsMy8Jn6fix1m/D1cxb/B749mqRomluGDFuF1fKW3FMbOKzHVcLRpNybCzIvk52dvQo7c538fd5N/gVfLRxj7AOsZOlTZbHl+f0Ed/jR6fSOesnqEv/EUZPAgEbXYMDlm7BMHvhgvcjwc3HRvYaADBuITCODMRm41wOCwPtMu4bfwE8FyQcLLwNo48c6pwDLg5AR5aXcop7x+EXmJO+9dt8EuJD3LPZk8Q6kI5m5TGqXjlwsmHEMUrWs1sncXE459j5+bMLmd3zIBHx3SYBbi78y75sSljm1zJGdG3kzIrOciw1f3z+EbM2QRVmXCon8NJusm+T36tN3+r7dHA4hMjOnEGFxSHsJoEZym8MsMf8i+D5woUKcFehp1P2xDCLwhMxpHfucol/YWb4lUyPYX+Y+CDq+QM1d5b51SpuI/4d0CYbfYxZALKdnTlehgtOExbfk9OTuKD5rRuXXdy8GBimOSN48SSlTa89hdmD8SgnWtn9wc6VMuwhM3NAQdjDx7t1eQqrGOGf4SXrAH+IYK9WOMGdNHWCWduzMwsRR5ZC8rgyeMzQYvp1WTMYxVkY8hNjwLjtOullzksZybqpKToLtOqRPkzbFEYfrjUvhj4clJU+sxEi/pD4Q+IPW6JsCTcRwR/+5acBY282+ENunPYlEPlB+zCISbRqQxAVVPrUxrIy1nh9zsbloHKfUQeCWO7FcywJQRBNFZHXernkn213TOD9uLgboDeEIIasri1GgmbwaAaPZvC+8gzebgiipm2nTNoQxNIa85I7W+y6wLI8xkBopc9UAcpY4Wy7WxEuSkXYIGAGVFuBAsEoEIwCwY48EEzVZJWV+vxSsuSoBKLNCvcyM5Z6IkhgkmqDDeOfkojZdqdW/PpDs1ZUCBhSjBUpBikGKcaxK4ZsmYatbA0d7sel4FNFgsLD4FJUFWPTFgvQDaNYRkh1xMA4tvKIPy5+fVLXjQoMQ4pBihGTYpBiHLtiKDYLkbW3+Rhg7hpLM+znY9yLYmxaYRFaoaz7GAbq23VpBZuXz1YoUl0rmBhSClIKUoqAlOLIlQJYoqHo6taa0G3o+hEqRd0GC9AJHqxVnYvqyooFn+JxqRNEJhKZ2L2ISWQikYn/W8jE/eRB8Gq2GDYxXYwos+lm252Owx1by8gcB2ITKbKJIpsosqn7peBbYBMxWdLDbJJgERBLJ/II3375RN5kQSg2FP96Gw11zTi0dJdmflg8ZGhdWhMvKyD6nkN00lOOJqJEJSuXlyGArFTY8toBDpSgnABIoL2rhWlGWtSst2phel4tDLFrGLR6tTC1F08QvA7W40Zmz7xO2qYwXmeteSG8TlFfJh8fonWI1iFah2gdxi8Me31/aa0W9kJ5dgvDX6d1mGnak9Vhh+xD6nRVC1N0huoo5liX20O6i326qoWVLYmrFmZYmjFSylw72XaHP/vUPKsE21G1MEJ1qFoYVQsbfmWHdkdUR1W2rn21xtUVNptb42ZUZ30fMXF1ushqYan9L0GdbLtbD56V85v1EHGdqoVRtTCqFkbVwlo8o149BSSSSVA18yJLDbBftTBNG9mIe+guANMaQreXOAhM16yvhVyr\",\"p/JpaoF7mQwrEJ1UFcpVsGy7WyU2wueQ2mn1aVCGhZNWEKBD4dYURHfkQXQoFjbSDX1ruHVrEN1xakXdDotQjDIlTKoYXVVgMM/0tO5XlGHhpBWkFaQVpBXHrhWIuFa17QHXSlsV4toawJZZp3twLOomWIRMlPHWqUx0xVtDJn6sy0QeE04iQSJBIkEiceQiAY1AQUl7a0VJ7NAccXdsDsW6/RWhEEX4kZUqBBZtWslNKESF8icih4ic7rVKInKIyPnWiJx+5poE1grTh2J4nNT8l6Ujs+1uOagAmsTjEI9DPA7xON2vBCJXqfuqFdbK4+zlHQiVAKE0DnMJemVxWIOVWmFPUG7qqqxE9YOfJH6ECkUJasewGkKo1HMdzv1J5N9KN6i0EyxYTS789vrtKwnFgmLs1GsdGdlSRzqL3O2xjkzapkAuhXU5a14Il1JEMjMuhZ2MuBTiUohLaYm+oioyIqrIvJB/ZGaozqWkn0VXfnLB6kgGSRBfn4xP5igJWC5gPOP1Jp+8fCGx2C12SJ9cijqWR2O5O3453YdzucvVZIZO+t6Fk6CnqqzqA9kasDWpdC9ejEZICRnDUk3ZKhO0Zdtdfp2G4SzyLBCXQlwKcSnEpXwjXIp8WDhZxRq3Rgik+/CiX2K4FE0slwI9GFW5FL7drQdeqQd1LkUjLoW4FOJSiEtp8YxEzvjty6Ug3Hgbl9IFLR6JODRb4L6DA5jXUJYASL2GrhIAT7X4qlklynho0goKI6MwMgojO/IwMsalGKryv00r6nZYgGKMymJjXDFGYHvaw8m0eFpXjDIomrSCtIK0grTi2LUC4cbKgbz77n6FwCSfWsa71y2wAJWwqlFmzM8As9OlEkFdJfKwaNII0gjSCNKII9cIjqUgO+C2uaeu2OPKosOWhYl70Ih1+ytAIUZVvp35EZ18uxa7pUIQlkJYSncMKmEphKV8a1jKN7AsIQpLYea/yrHz7W6HwS/lgLAUwlIISyEspfuVQOQi9X1gKbvPIAkNWxKKpbAQ3l6xFNbgOpZytSixlAJBmYbRfDVzpNTtkuJQukxX4N1ZMFj4n5JLlHCJE2c2i6Xk2pdmToLaLtJ3QRT58ZIxLTc+Y1qwy2SG3yJpGfmRP/Od2P++R47FtCxNNhU2t9Ybx5K3KYhjqTUvhGMp5hrzkxHHQhwLcSwt0VrEsYjgWJ4+cX6GWa5zLMw07VlfhR3SF8cim+eyOUaJFXXUmoe/2EdTOjiWsiVbGMeiKzrKq5SOYLbd7gj+ZeD9WklXQxwLcSzEsRDH8m1wLKqlYVH8y1Lo16xx43JRadd5bS0xHIsqkmNJ7X8Zb5Ztd+tBS+Z8RoiqxLEQx0IcC3EsLZ6RyCnCfTkWU9maM781D/IRqUMdZElNcL/hBFwW9DLgLNvulomNPMj1AiskFhR4RoFnFHh25IFnHGTRt4tFW+BZzUvY4knwGSJRnkRVK0qQRZxilOhjqhgd6CObaOoosEJaQVpBWkFacexawQqs7FDVl6lJY/L8/RyLexCLkmQRJxNlXq1UJpA7tI1kYTKxUd83j6QmkSCRIJEgkThykeAkiyFvnX1S2+KV9xMJoWsTqUexboAFzD1pJcqSLlF0oCxMIiop9QllIZSlO26VUBZCWf63oCxHJA1iUJbU/JeZF7Ptbo/hB8ypLZy5j6zBhLIQykIoC6Es3a8EItep+0JZvgHvQCjKwpaje0VZWIPtFVZ+XnpgUqQklPJVlAlPiq8y+uTBgwfSs+BTCb58+PBAV62xVCbQX4S3QFzc2crzU8TlchZezfwbf3aJsi1Lf+H5C/c=\",\"7rRXlmU0MpBWB1+rR5YlbVMYy7LWvBCWpZhtNK30ZMSyEMtCLEtLxBaxLCJYljNZf8m5lauLzC+5YVrCTNOeLAs7pDeWxThX7LGqj/X2mixysQ+vttJSk6XcSxPHssiGphuVicF0u8sT/HH0U+kJEstCLAuxLMSyfCMsi6liWbybZWmNQCtsNrfGzRFo63ZdTASaIpRl4fa/wrKk2916cF7qQT2QWiGWhVgWYlmIZWnxjETOEe7HsqiabCGZV7c4tE4Xrhv+rykOzRa453ACpgpmBWVJt7tV4m/NKlGGUJNWUOQZRZ5R5NmRR54BZTEN0/7imiy1yZ9j0Yq6HRahGJUYZa4YnTHKP47+WleMMo6atIK0grSCtOLYtUKxTRs0yza/ApG4zSTLsfkVdQssQiUqwCNXiU7g8ccRy2eWrf+sB1KTRpBGkEaQRhy5RoBkMRRVhwR0zz1tX5jgi8lf35/IQZbU/gpQCKMSuczXJzpqxv9l8OPoXakQBLIQyNIdtUogC4Es3xrIst19+Opr1oJAFm7+K6l40+3uhYj3pRwQyEIgC4EsBLJ0vxKIXKTuC2TRts4gfXUJEAqysKWFXkEW1mAFZNkAUzQ5B1MYlLKMwqUfze6keLVchlESS/4n9m+wuJKchScF83wL9VdYbRZ/7gQzKfajm8D1pVuER2DDDReeE91J+HcaXK0iJ2HvYr3iLCPd0myZTbH1h7NkbYrCWdabF4OzDIpJRzM7HQEtBLQQ0NIStkVAiwCg5c8DY8FcmQ2ghRunfZEWftA+UEsSrfzGl4jRQB2dK+ZYU8ZK20tEdR9e9rmRaanuxcu/pRp0Mv7l88lqbbHCWQbVievIX4bxMArdj64T3fjRMF3pQd2zYVa/LM7UZ6iw3HEocW2g+cA7GRfbHU6h9uzmOXbPVpGIaSGmhZgWYlq+EaZFs7eGLTc7hxvWuGHpaGMfQUzLQBZJtaSKUE4TZtvdivCXUhE2YqoHMnEtxLUQ10JcS4uDJHLKcF+uxdS3Qo/NmZQ3jP8WgeAv/uIEos0K9xthwLXBKmPQsu1urXjVrBWVmGpSjHUHr2I5cD/Hw/UgHQznNJzNwlvEb9UCFmqeYffMfdFI0SAmZA9vEI18HoaYxo0u2Pl/Q+s8bOCQlinugOIO7iPuAIskuF1RAj5hmRxXy1noeL7HPgp+xSeMbtFHOmJuu6PR+nEp7lExNm2xAN3gecKqs04Q1tYs/Jh1Yvlr1mKXK/HVpBikGBCXujT+jhYlWt65aVHigEUJLDkn/iK5yJrYx8dQ7JGsqFsz8TfHLx+lj7FphUVoRRnFnM5HdUUxQyv+XNeKIs6alIKUgpRibcGw2y0kpfgqSsFJF9mEEHT7Fgq8jwYc8iilom6ERQiFXnMqkHqgy6mo1Awm3IVwl25TSNNONO10H9NOoZv4ySBOIt+Zd80/QR/+dyxniwFeUk+hzNebbXcLwovScyDghYAXAl4IeOl+KRC5et0X8IKcKj34CDwKVdyStVjkhYf49gu98CYL7EX627WT/D6Wnlw7iytWl+Wh9DYa6qohTe6kf7+J3Wt/NfEjlGSRrpNkyUIGK+u6jeG6y9VshhZM1haYGunJDDHAgSud+1g/ZQ3xYi+DJy9f8HMsr50Z/hIFN8GXnMZgp3n6CTObnpQEcz9cJdI0jKSEny3Bt5Oi1UKahcB0woXEvCrFOvjLjVj9GZz54TN82WzwUKfm4cPxzsMEG710In/IKxrIp6enaWkDfnnmmKdlL60XbrhaJFiy68XnVExT00xT13CG/tCgrE1RaNB680LQoBIMyk5GYBCBQbQGR2s=\",\"cMnvjDPQJ67fm/tcmdR7evHx9uzNc+Xl2+ex/mfzOjiDWa6DQV+ABe0LBU2dWdxKBcnn8mis2WPdakk8hBnbfB+DV9Buo4KKlmxhVJA80jVTKeP6su0Oz/mTrzJHm6igkN3qGAlyncl1Jtf5K7vOcyf66IW3CzyPrUF8iqyq9tako83FDCo2W+fWuDnoe91ii/GghTJB3P7LJROUbXfrAVuJW4vXmwWL1adB6qSlkZUzZ+IzNIaPHA+ujE7Gn0/g/wULfLwe5/zLJEz+jj1ZyKCuWMgUy3LFlu8Br85emT/Nbfn12VP9zfnV3ZuzF3/E7s6NAxy4Hm3MP4wzbJbdpVlMD39dDxZDxdBM6083f2Rf4irK2mBn5n3twm87b3kcTMJAwkDC0PmU9OspHBCtp8mqMjK3Vi9QsArXPL+6bvm71SF96xelDnUgKIUye5kNS2fAkEwgdRPYpFga1p1td8sEiwJvkIkyBJ3wUUpNTaHdlJr6yFNTcxhItbampm7OP7qnJ3F/WlG3wyIUoyyOlirG2mv9u8fV6b2/YKKJ+SEtIBBpBWkFaQVpxbFrBUrdWNpo66yT2su0032IRUkBiXMsyopoqUx0VUSDTDBkqLHWDYkEiQSJBInEkYsECCDdNuSt+WhUsJDfxuxTzv8Ikwi5xETTJYouTBQSwaaqMokg+ofon+5JaaJ/iP7pLXypY1GiT/qnF/8hXdoWtTAhhv1JzX+ZYSbb7l6KYGmQMzkg9ofWqWmdmtapu18Jeo1orUlCX+zPNyABQsmf3rmfNernQcn7fFg8wI/0gxP7HgNkOJwjvQwmEStTo55+YpzLLxuf/v27XXCgWTD5U+JM/ggk2Jv7g/BmMA1m/oN8VZ+fY6B+GgwGJUlU/PF76QrHJai4g9I6UXjjx6x/Aage5fSThGMX7nVaVmceRr6EULlJMEvuHkl8cx56K3BFj6Qk/OgvJNdxr5HT8ZHkrJJwjqo7bvaHyJ9Gfnz9SJr4SQLQyY8i0EOgoTwEfrH9wRWxBnmJHj5Ur/1b/mkWF4FSPvM5tmO2w7+kJ+mWtMvPvyTpfbBAcSDpX9KZH7tRsGTYzy6Htu3zLzSF4dz1B3uP+b7j/Y7raB8N/UviF1HCRQfute0Ho6AwBIqNwtuZk4DemmeHJk78MT7d1sDm31kX/ue//2/H8wbsegcesHR2zQfMMA7mSH3FqjZVf6qdeOx50mMc9sJjNxW7VdhhUn5YEkr+wpnMfMlz4utJ6EReYx+zTqSTHIMQHblWB6hnAbZrwKpBDfjwDJaMfJv5V7i9q514wu59HzealB4ppUemN3w6sOWR7UOUdcL/5LurxB9EU3dkqBobletfBwgRRF+mSMJaGYp/SZc82PES3XmaHia9e/aEHcYenuswCn7lVavweOJwiR3efn7ecNaJqY9IyfTQzUu2/kl1JF45C4eNTvqlK42s1dDa0oWiE1f+gnWieSicKPGnjgsTk3a7HIkfs8M6h6I4vLUz2UhcIVGC47p+HA9S89Q+HtWR+NFP2A2RHpnZr1XMbuXs5sC95jF0EEhHdnVYFqB6b/JO8Ku/fl9u3JJpx9Y6wa/6xn25+y2ZN8kf0evA8wf8muDp9BnGGePWGjgJgNAJ7tj0SmSXo7QTz3GYlB2GOmzZYVJ5WP07Nw9wNhIzZPZdH4i45Qlde0Rf4rD1pzPe9/FMbzM+Eq2dcFcxJKvNTrR2Ij0MZety89I5JNWRaLCVlcuQj2T1nuCdcEDCxqvJP3z2/KAGXoPtzIBcYK8Acetjd5rbicifQ+23mux07Mp74h0/THLyToBqbuhC5yhULgc=\",\"6hE5QTRAHrEBXiX8WfMNtHFjvuOHSTiMvYH4s62na243uxyRf4O3l52e0erleMcPywxmRV+gylDWmqK09zDrRHwd3n7BI/oeh/X0iDaPUfOnGIfsp/ytec+dP2XjkL3QwOQkW4/bFC8JArZIGt8StrbGd8guBW4oHy8Fu/xUO3GWHtZbJ9ib6mSXbqx3IjvssG5kI5HW3txlINZM9lNesrOvy3GF94hb504aSsH62+RmvxruifzoLx2PbCQgHbvfFg13BZQUbwzJnfSF/al2Y9cbo/G++MLzZ2NddmP3W6PajezOOKwTxYOaFoPdvA0aPql24gWvIfulV6JoPBsL9kbRcMKmj6qd4GJ+6Dj0NBJf+mzk3zEbiX8AhWr62g2fNTyo/OgDetLTg9pnNw56UA/rSE8P6mGdKG5PWM/dn9WGR7W/buz+tG48rId2ohiN3fuw6Qgd8IBkj2F2Z9z6k4bnsvGjhoeVHX1IV3p6WPvsxkEP62Ed6elhPawTvT2s/XVj9wdl42E9tBPpaDQ+Di0fogvFE9ayy74fs/sic4kwJbjYenh1UjGdz+NziezN001nBGNMv2Mma3cfKbs1PT5vvqM3Us7npdPtOOywbmSd2P2VE+NWnV5NvZF+RmJ3HVvrRPbOedg4HOFN+esON2U5eVS5KcsJ7mU4C9yALSLx3+4k3KTYYIs/WDMKVxGWbtgEa3nTZvdDtvvWHmCHTQnDTPfaNHvei/aJmtp5epKwA3uRz1lw/3TXZ7Q6GmuP6OZF2XU4epKw/kZj9+e04X2zv24cIGGHdqIQdDxPmDxJnxb2e8fP5nPS9Jikj+iOt4a45+SLu9H3c7JHR8Q9J3t0ordXvYZb9Au70e9zslcnitFgItPxbFT/tPU5aVGujuaFPCeHdaPH52Tfjgh5TvbthKDn5JBu9Pac7N+JY3v7XC6hapX6ao3PVtUReDPzpEsccIn3ShbKi1TGoXTJl+YvP3z4v6T87XS5xGso95da/KTs5tx9QWDNFcjXibaepvELFR9mnTjQKeqnE7u/bDU6Rf10YvdHY60TfCK+chu1XPPui5E+G6mvngbMbN+/9FCzG2/Ksly7s3DlIdptMQ2uVmkcz44vWrkrcNgd0VMnDrsj+ujEtgtQk/Nss5zF2ef4hn3Z41ncDwtYKlzSBYI22iIPG94oKkcgMpPFdO53b36JmSp99cxM9daJXV8m1nz1wjvd7MauTwW7NtlI7GUhypHgFmKzA/tdjNIbcxA+A+FC+OO2n+o98Z4d1k8ntp22+vfyeRDwZPhzJ+gK+Uk70vBkpAcm/nyJSFYWtIi5on1MZnY/5A3sMCDbO7HP/chP2NMrbm0sDujG7ja7OhrZzGZ/3dj9Ka12gz+kh3biyF5x/fjmC2/NBcp8hAtW4AKzqYhXRawge0ZunChgMdWx9N3T93+Nv2+7WbJbk70V3e3QA34zl/byMT9siVohPGiW1zxBTGLY3JW2PuTPR9r/nXqx+ZAiODH9+q1n2dJw+ZCmEeZbdud/rnYjCzA/sBcVW7G701HtRibmfXZjVz1f70Z21GEd+TLLubEidFgnqgZ8H8tZdiOznP114wDLeWgnqqOxZY658ghV7433mJnOnvV0JYNTOns/t+W9cYM8Lm1v2+uP8abdyHuStbHvq14xGrnB3cFsNHSiMNd7j0J6vp6MV3/dOMh49dmNg4zXYR3pyXgd1onejFd/3TjAeB3aiX6MV/Gsf7n5YvfGPj/l3vsd13EO1oV03iLw5h375X9qMFsvzl7t5Y3Vz5I9IbwqW/1vzdvVTjzhh4EVRXwaWNuUlNnfgGY=\",\"ndhrMq18Bc7inDdGYs/+ZJ3Y/fVi7d0ze7/oqRO7P59rneB+2aFdODK/LPCWzffh2qcNT8Z3cegCG/xeKnAAhlxjA+UmdmgxdwMOuyl76sRhN2VPnTjkpjy0C8d2Uy6m4fZ7qHpTvo0CWMr8FZdPEHBOdrd7sTjXUYnWPxAvtvC3TVo0PJrZgfEQldX3nGfnI5GZ6t3fcNesZOaf99aJXd9va53IDjusG/lIBDHH93f4qV6Os+yww/pQWMo0hcAOfVgbiafpYQf2oR9z3VMnDjPXWSf4w7GTUtVGPLsnDjHXh45D8YguUal4p9uSHVFJmsEPCyNUUl7gxXJtuUFCToKApzTYOjhHZS1RTAtLUfhvA3leXsHqKLDXueFfAyRneZETjU/4ivW2RtZviOx+mPoJssvs9FPtxDN+WEMHto7+2qmyTnzcKhfFUQ26sdkL6fHbFxIa3X4vsHZ7eDIAzgWolgZb++IMdcCzqyGlodM79SLrRLLLclw6GNWROGeHbY7DTmeuXJCjejKastds3qcNwAVzdbKD9x0A3n6unvsw6FXggqPrPXViLz9jY3q9p07sJVwbk+s9dWIv4So7UTi/h9wRxT2RRq1t3oUNn1RvzHc82C0u7ko2vTOXkAvJAWuBVbkFjDn2YGt1sXvtz1sE/qgeTx601/C91z/aHAUv/fI8CrAS8vfmMZpTs/w+6VJpq2OePaBZLqCtfeCP9Eao1/oJ95OtipUA9bH7M9rARPXXjd2f0mo3shmq/rqx+3Na7QZ/TA/txJFNByCx2Wz7/G3DCw0/8IukK30WsueDZYXLcip5SAXYlaGu2gmWFS7LqZQd9l36Tc5ev0fuo8BpD1qoPoqFimYe7VDyfPZ20/6eu+aD5iTVYWPRw6vdYR2oWIos29MuV6Q6Elm2p0OvyFFpR+zMtwedrbl+WXzu+8evXiIpIU/jUshDGnsWRC6LqkE+riRCIrFmg54rB3Jy7fjT8Hi6O52qvf2sE3sqx8bKBh+LA/pSdmMf5Si7kSlHf93YRzlqoaGHduLLXvo3InUbb8/mO7Hx9qjbzMad1j5stJngzWuTI3gqkA6t9uC0dCzrxO5vNevzdmniqZ5GYvc7c60T1Vuzbi1avnXTUPegHoeOQ3FjziGeHqqiN/Wz9ln1nuDnL44Nl1le0n1fLnoyWXlH9rgGtbsd322Pn3Lv/Y7rOAUbiXRxnr3XLLfqSIN+pAfuewnKPhVW4pAceT114jAr0VMnDrMSPXVid/VaM1Xc8Tm0C0fm+CCJ9E3Asn13/jQ8GY9fIeqPH/tlT0cvT0ZPnTjsyeipE4c9GT114pAn49AuHNuTce0DMNz2szYx4qxY+n/2SpfFhC2QvR/rXKh1JMWsuZ3ElD0Z+/wIVU58mfk268AuXPl+nbl//MAvMw38y/diH3rqxGH2oadOHGYfeurEIfbh0C4cmX3A87xDXFv1yfCCGATencSPREUJOH68Ssc+Dzt7MoqqHz/OwonDEpwvec4u1uTl4OzyEf478AKU1EnC6O4yZYkSbpduw+gjW7oo/sraQkEV6Yo3BRApayxubWnpu8EUSyFNrfEuOIu74psl104iIW6Km8EsEz07kuG5UnwXgylENZS7JTIIsJNfpk/aJZ8mukzv+EuWO32QFzQ5haH5hO6zujA4AEchozeDpbJuOZtfkXeKnfQSMbqXeddOs6oyaHgSLDAbxUYuPe9gesn6jFohEitkgJ4unQTVWJw4XvGFn0u2B/7OUrUhOwKoSmbh2U48R0LZEFr0ULxhNWNp5PjfTnF1WF/cVYQFqqS8EGN2Jc5DVleGXcs=\",\"YpAuh84kDmcoOzBkJxgm4TC7iMPiIg7zPhS7sPE9zUOsT/8RhwucN0REBsKEkdcB4Rgxpt5cVjPhjs/DsWsSssHkEFpWPYb36fKSjdkCffA/LFJdY6RdEb+dGcfBVNqlp+xa5t9js5PSH+Z3A39x82+dZzrb90yShN4JPRs7wc5fDSPKBvbxDI/Fgt87M1QIwt2xee03LuyxXvsdOrrz+HTcZGfF49bxNFROdOCV3/6tvuTC84pN71H8BiUnznklqCdpJSh2VzzjVYqevHwhMbOMIj9YYGV8Fdu5LBvlP5JurwO8bAb4c/qCObnLbc2pdM4sDNr02d/5UcGviMJiVtVfuNHdMkkLa0GRPj5C6AsqWIFABQAWM/TVjcI45l1IS/Sw1C6PJC9yeI0qbqg9xok6vMwLW1uu5Mws4mJxpf658tHgqfSf4QrdWcDYpUGO3ADy7qHTPsoOoZJRWjOGm+nBYBEO+N8vpTCtPgULjl2zfJypMX/27s3Zm4vXby6ePH7y/OklvlhJ8RaWrzh1ytXyIzOLjBisLM1nZv/SHnFl+u7y/wxP+W045BeIXR8/NaPft3Tk/M1fnr5O+3Lx9vH585YOFdqNNfSs5ld6C7xLa35t3gIY33RHPvBZaTDcFbgzOLDHBrxafSeGLEHxcLdcI1QL1hkvAqesBBiTOS8tBsOGgQUyrN1Q7EN20dnyI1b/FumNh4ooUxj7GRQ3DXdGQRteViUJ2Ps96+/Jb48+n6yi2cn4JC/A5iyDalV0FC4J42FZT23Ix5YVnmLShRvJj4eKaVgjS1MVlA6F0gLCrpVRPqTNYdoiml4tZ6Hj1ZpOP4y/uMtZ85//xGJHHiG6zJ/9hnN1F/7sHo7EuRre8KJXgxGrkxd4J+NiiDBCPB3nyfjzCUIJgwWGfr0G+y+TMPl7dpiuWLalWmq1ZOurs1fmT3Nbfn32VH9zfnX35uzFH9nA32DeOqoPPP8wHx1WdwzvAyhvlJyyup7BYqgYmmn96eaPOlpAAa60DdbhEzbgXTdGZ1HIrSOIuJR4uP69cUz6HgNrVv8a6/dk56mHRSNFg7B1hzeIRj4PQ2bwLtj52U3Ci2Ef0jJV02YC9TvjB9zyvzPOhqhzFGNcuc05ZFx5A2jIv8GtflBLaQufh6zsEcLI2FWv1Ts9rJ+u31s17QUKRF3wR/fd04uPt2dvnisv3z6P9T/rn8JP6DfM0kVW2LlqnWAfUD/ugjkOQRLE1zieyQgOyHauvtYUNg2vFNPkZDxFaTgfFm4+X6Fe5swvPllGfiYPJ2O4K9gnTSvhXTg47ESVVX0gjwbK6Fwxxpo8VvX/whmzGpht+1hsn+VqgqmMa7+1JZPtlYnG+Jce5C1ta6hYsmLYiswKZHOTnm931NO++ekvP5Qj+eT549c/Pn355sfTuYdPudhklpZLm0+qQKpwBlmErHzm/+B5ZiYHhecw51B/9am9VXWrYtYEJOwW1RF/+4y3t2XI215N0oUxZooPMWZrDaFhGHMHzkuaX/KQhkkVWMJeGIofwgTjyq7zxQ3IlIvsY24RXXYpg8S/4JUzMzv8G8xu+r6X78sLas+d6KOH+yC9sxLWdPoa7TOzFMPhPBmPdEU3H514AVIawWIvkLIRWziIv4NzZP1k3FZWuzTrox3MOt9nEoW37IsVp1h/+UxfFflba/fLd358+QY+XDO7vTg8NUWw0P+qIljdivAUu2famjpTKA29+jTIPYbTX4Ml9iB1WMbjYeYj8AtPPgN7RyZ1IJ+hN5+hpg6V7MDD1AqxkreN+qBqsqrYCmYm7kMi+Ju/QIlotcMC5EJh02Q=\",\"FblQlG65eN4sF040N3USjW1TdSQaJBoDts5CE0038CDT+SxYlP5cin1EQ7ZM1dBH20RD2zpdtItfcZ+i0WCNBUiHbNc8DbtbOp7VpWPuuGFMokGiMeEeVfeUEXkaJBrH4GkotmnJqrFNNPqZjLof0WiwwwLkQilWn9OlCkXulosf63KBkDISCxILEgs+FbnXegstWnwVD0OxLd22FGjB/55pqQ0rLEAqZBYAVF3DwAhWAgoeVwMK/oJV7celVLx88eTp6/dsUYOWLGjJAkHiG7Mt5EiQI3EfjkToJn4yAB7hO3OYo9a1C0U2sUTbLRD9TEGJXtrOba8IRTBrioBogC5FeFIqwrs0MPg0+cTiFUgVSBVIFbZPt5HH0J/HwMOcQGzyONZWHdCx8tqtAthhS9zqLgsRolWgam9/+zuL9I0YEdodc9cBdmTHr0EMCAc4qM3s+LU2J6F3h9gzIFV/A2z6e4BLvISe92HxUHobDXVVYcTOv9+wbJ2rCUgjJNfLMZVtAWFLBKyhBZW19fMSOX186WmaNOlZGIGGSpNf/rC6kp4Fn8DksBMh4zWSmyUI9Q6+5FwKI2pwvofPWH3j9LsA8Xj4cLxzr2Ellk7k56Nk2qenp9VgbVbokMdpZgF4ai/CDzhFswxZHeFh6ZHfSdsUxu+sNS+I3zGLBbd8iIjfoVi8glchx5Yc294c21Z+RzVen8Eyb/I73Drtze/wo/rid4xzWR/r2ljW2gO9i334e1Abv1PsZYjid0a2qSqjUeHX5tsdfm3yavBT6dcSv7OFi6VgOwq225z+Jce2Z8d2N35H1r6c3ymMMYcpm7HM9X1EBWebtkB+J1OAgt/Jt7sV4X2pCJtx43DZiN+BU9/gp5M6kDqQOtTSB7A3+N7ozn1CsTVZ0Qwby1zdM6BYKGueAd1LIoTOgEIiWu1wL/NjOe6ZyoNV8Dv5drdc/LVZLqoR4yQarbQviQaJBonGsYiGbBmmpmwVjdZQ7KMVjQZrLEA6RsVyQuZpdPE7mHs6r0tHNW6cRINEAxkz6mnUymxatDpBqxO9rU4ckCkA/I6iqWBPuj2N1oi7IxSNBjssQC6sgt/JPI0ufgdy8XNdLsrIcRILEgsSi7XMtt3wKy1afJVpKcbvqKPR9sA8mMJvZl5qwwwL0IpRkZYycy3Ay7aGa0Mr3pZaQQBPLVKyEltI0080/UTTT/c1/XQvAM9e7gRf/xa4ti0E4MkUgIXzcqQz3+5WhHelIhDA053/n1SBVIFUQaQqCAd4jkoFBAM8POK3Z4CHt1kAPA+kx57HwJ0PC9Rtkj58eIDKJWPpDOnmZqwc9jgr2baMwpvA44WRpihK5LOaWNV6eqzkESgfD7WKAOykdZI8H8nx7xj5wsrN4VheHScrdocqNsUJ7bUTptAPK5iWVupDvToAYaxVVC1CzSLnCmXsHHzmx1llnxI/ShvNsCH0KA8vmKCyEyuBYBsp6vNh0cguZQcug6WP1M7+6d18dijIpAAuesgqaLGKO1LixB9TZOkANkrR+m8S49J3L0esyXc+itjd4Nqz+wo32Nv0PurtNjr08qhy/+yXVbJf/GGrs19KL7MIYL9U3dQ0lv+jR/YrbVMY+7XWvCj2qwgLzYeI2C9iv4j9gnw24fw0YX7AhHk7+/Uffx3AMjewX8w67c9+saP6Yr/Uc8Ue6+ZYV9ohgWIfXt+pjf0q9uIUmYjaTSNbNQxZqcTfpNsdUyLRr5MIvckqdRD7RewX5cylNIhbciYLnxPZif3STHsr+9UabrNujJvZr/V9hM2PW0LZL64AlUnydLtbEVhlptbaTaZF7Fc=\",\"tZQwraPWyk5QRCZFZB5DRKYmy7aqbM2o3o9E8Dd/gRLRwH6ldriX+bGS/WLywEucZ2uq6Xa3XLD8hw1ysUYbkGislRkn0SDR6IxUpYmmAyaaDgjjB/ulmNtTJn57otFgjUVIh1qTDpRObA3QxNzTqi4da8wBiQaJBrFfp5WXBQrnX8Ql+ydyHmqfLBOKbRiqtrUcx7ckGg12WIRcVNgv7ml0sV+Qi7guFxXogMSCxILEgsQiVcvNwNUjEQuwX5o50r68OuxeKxf3My21YYUFSIVSyWjK1zC6KnVAKsJSKgj9IvSr+8WZlixoyeI+lizuBf3aSyB4LJLAdQtB6BdXgEpG03S7e67pn6UiEPpF6Nf2WkWkCqQKolRBOPp1VCogGv1iStA3+sXa3Fa7SbYPZWoUMDUPWXUm6VXofpRexPHK56zYk5cvpHPUaeqjaJNs9w/ujCrgDhuqOrjTW9Em2VBUi4U09wjupG0KA3fWmhcF7hQxfaaRno/AHQJ3CNwhcCdhaQt6ne1sBXeUxYr5jw3gDrNO+4M77Ki+wB3lXBmNVdRtstrBnXwfQ+0Cd4q9ZHHgjqyqulxZDUu3Oxzaf5rLSnl6AncI3CFwh8CdbwPcMawvB3fWjXEzuFPsw5lNYbObI6HgDlcADf3PIrHT7W5FYBUUGyKx03we5ojAHQJ3KJU6hdO1+Ei9+gwHxGAD3BnZGqpGdKdSRwhFc3LcdfO/RSL4m79AiWgAd1I73HOMBJcHlt+mKhcISWyNvoYD8bRZLtZCxUk0KKyOwuoorO7Iw+pUBu5o8pfTnkcrGg3WWIR0VJhPLiVITt8lHT/UpWMtYJxEg0SDRINE49hFIwV3tk5GQVW+GU+jwQ6LkIsK58nloovzhKfxpC4XlZBxEgsSCxILEosjFwsO7qjbwZ1vSSw2rHD/UqHZlTBtSAW2Oz2LkGUCzdYwCNwhcIfAnSUV9Bt+bW24F3DnqJa2BYE7XAEqCYrT7W5FuCgVgcAdAncI3BkPhw6pQntNeJEL2cLBnaNSAdHgDgv47RvcYW221Wx67d/mtZJ4Faa5s2Alkl6cvcKvy2WwuIrHrC6SJKX/ZWWXLvkSfv73S0l6tXkQr9CU/+AQDzWMEh/7ojoU+23tDPWd/U/LMErYzk/5b507B/N85xf8t86dZ0HM25Wkl/itc9fIZ04X2/kd/y0uBoQVhpqzelRs5CYo9eQNPX/qrGbJcOZfOe6dhP0xclLsXvtzX/ouvlu4ww/4+QNr6N++ZwPNDo/9pROhONVwgatQOyYb/ephp9J5iGJQrI1aX9jxEwe4FBpOu/AIta5QMQonGcweSYNB1rHpzLnCaKf/a6xi9TYaIsruUIpL5vWbUB0M9wa/i6QnWUGuyZ3078trB/W3kii4CSLU/ZKuk2TJQlUrgUgR4C/XiW78aJgGjLizYLhczWasd/3DW2YF3mKPiyh4Sx/JpsXTyfYHb2VtioK31psXBW8VyUzM7HwEbxG8RfBWS2AiJcM9IBluK7wln4fPYJkb4C1mnfaHt9hRfcFb8rmsjmVtrPHwzOYQzmIfowveKvYSV3XJMke2rRnoaBp7mW13TGosFz9UJjUI3iJ4i+Atgre+DXhLVpCktTsyvzXRbWGMeV7CLWZdbO5CUyS8lSpAWXUp2+5UhCcbIZUoq7z6NMjgLZPgLYK3CN4ieKvFRxI5571PLnRN1nUs8W2TCMRcNodU7iUR/M1fGLxlZnNxDXa43zgZLg96GYGfbXfLBfPdGljfNVyARINCKym0kkIrv3b4DJb4YK3iBIs/J2O8989Cx/M99lHwKz4BvGWN5AM=\",\"4K2jFY0GayxAOrQyoCb1NCC/rfDWcvFkI03EGjRAokGiQaJBonHsoqHYNiq83tNk1P14Gg12WIBc6GWeudTTwBh2ycVGmogKNkBiQWJBYkFiceRiAXjLtG0VCxPdKxet8NYRehgbVliAVGhl1aXUs+iqugTPopKSlOAtgrcI3qIw/a8Tpl9dsrgXeGsvgRC9tC0G3koVoMR5s+1u56GS+YHgLYK3CN4ieKv7rUDkQrZweOuoVEA0vMV8g77hLdZmG7z14cMDpDgdS884j7UIb6XYuQGoxLCfy8HHy+HlYBAsYt9dRQCZwmWC8mWMt0Eq2oXv8q1lFE4DwDgcCnoAIujJtbO48j22yVivn5ce1qgYV5TnbZ1IaQCWreaHoFhTeQDvk1ztE06x9KPZnXQdLsJoS++chSc5s1l4Gxe9BDyE0y9nToIyUHP0H8tmCxdfcxVzyMqfTQfx/9/e2fW2bUNh+K/wbklQx7bqz2DYxYAOHbarNd2uipi2aVuYKnmiZM0L+t/7HpKyaEuWa9gK0oE3ARTzm4c8onQevf4SGBabiTjxF/4MTdY90k1kf6148oMs+nZX2y9GjdCxeGymhiOIlhcTUX0iohbQtVpwHwEUSyY8jCswqItLHlyfh+pbPBRZ4CEP1b3K0bo76HmI9PCuK2ZlymyMh9JNNsU3xUPtgufzIXI8lOOhHA91JNbP8VBN8FDbSFA4YQUPRbvT+TwU5boSD9UZPHqdh874oa8UTSoD54s06unCOp2C/l6J+RNPEHPjdbxeqzNsFaka5KE6w543sqLf9XXNc4Lw8bcN2mzCGR0P5Xgox0M5Huq74KG8QffkW8VjPNTBZnxiW1cbdmPB7v1GeSjlAax3ifq63iOkhUeoEFHpOx7K8VCOh3I81JEzUpOPkc/kobzxAGoa9YEn13ERzb5X7FfxUHofvsrzMf2NoHZ3OCL3MLaiFPV1vbvYVruLvQh85zRctKKLVnTRiq88WpF4qFHHOwnRfn9Oo2I3bsB1jCweSp006ngoPHv699B17MXhO6fhnIZzGs5pvHangRj3cf8tJF//PyeNin24CXdhhTQqd1GnUAJ3kR26CysS3zkL5yycs3DO4pU7C/iKYac7PHnCOMZDnffm4mUeS5V24SZcRaGwrh5SjeoU1uEqZOEqHA/leKj6yOclvtEvn/FZeJk8+fMvMB2EfsYxQjjSPad6lvaHKeK5HWWhiL88t2OxjlTZ6VTOYl9FycqLarALQsGITuKh/x+/uGAX5nRBmBOCnhMRJk+miJfmoc5zEE2/2m6Ih1IewPrus76uf02RFB7B8VCOh3I8lOOh6u8KmnyR3TQP9bq8QNM8FHmCa/NQVOY+D5WjSiXJoMCfgkZ6Oxo+sA/pWmlDabEoFi3Yuw9/Snaz4bHPp+CfFPMDUioWiby9t4kqnVOarATuICurzMgyxF6wJAOLZclqHdPPEnKzK8aUPimJbFEi3awiiSazLOgrb6LWzaIm3lB3dGdxeWs6nJe04UEKQIrkpAIBYozJJOVxIlf+mlKa+nQq0ycSuwqidM5ECNGmKCQgiGUrESuRqS2bgpEKl280JYY8QQCMK+NbiQyzeLtO0FWq1EBbAgMl4vw3AtH+Fki7E9aSURrPxF5lN0ZjC52JFeGmA9D30+gRMKjbbh5Vc0IBMSlmEpiZJhhO6XhhGOJ79j7KKFHeC1meepUw78oNlywT1FPbOkx/QaPpHqMVH7UUF/7adqFMjgTAPkMPjbi4yLSubay02sb8cBakc02+kbmaakpWRspuVulg51A8TlKU0yi4WcaVS65Rm8yvuGFe+MA=\",\"1IwYGxwzxOHmuRwcaagdaLwRbEhtEy0OuHAjWnoAJuxX/W891CkOcGECHFAn0qaqv395u2d6+eToBtyzn7fMmMCbAxPlsMJi2KUg2TAggXOxK8IyWmWuKofqGOaJrE5PEnhJY1U/riKQeThm/jShiVnRKuFhZKy2WAIgGxWVSFZkmgBrtgTtSmNUUcF7quvjH7/T4tMFFRUQ+mjqsNelXRl7ROWU/XOKcmIhowCtRUYeFlNeZj5zu/RljoYiy1LgUEzEp8qr9swE8CSb4XqK8VQSexgzP0TiI6uQdsEopZb8k/ox2RufQw8PEw5qU9k5ZSwvcTNqxR5IJlw21Vzwr6A0sSsdWLax3TypsV214jCJopWhF6uttT7M8jnLqrXcIA+3B+ZIJ01OsoC5+Zn1TKDtS5mxGd0DMzYN4eBQg4MFUGndmHq9QUahYNsoVetm51Ywk3WGXtGEOkPPVv5slds6xu4lrH1/PJShZ9jM93YGxtncXyzg6eDxykZLy+PkGGmPfewGZQyEO79BoW16MuVSDHpcyAkt80ht9vQD3XgYz3U+rt3VlDBR3hU89Du91ovbhvKNAP1WuCTScdyQwGU6hVs9X8RR0eNAou9+gaijIbOBWd/dPXyzHCRWNRycaG+MIkjPgpbpNrEMLX/6ClvXUq3UygYA\"]" + "size": 41058, + "text": "[\"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\"]" }, "cookies": [], "headers": [ { "name": "date", - "value": "Wed, 17 Dec 2025 20:35:14 GMT" + "value": "Tue, 21 Apr 2026 16:19:54 GMT" }, { "name": "content-type", @@ -70,7 +70,7 @@ }, { "name": "etag", - "value": "W/\"5a2db3067893071c11dd0e22990f2deb2c329ec2901480064b1f0600fb841b25\"" + "value": "W/\"c93f57d7438ec795940d604c255cbb723aaf22f5fb389a3e190330d0c2aca6b9\"" }, { "name": "x-github-media-type", @@ -78,7 +78,7 @@ }, { "name": "link", - "value": "; rel=\"next\", ; rel=\"last\"" + "value": "; rel=\"next\", ; rel=\"last\"" }, { "name": "x-github-api-version-selected", @@ -134,19 +134,19 @@ }, { "name": "x-ratelimit-remaining", - "value": "56" + "value": "40" }, { - "name": "x-ratelimit-reset", - "value": "1766005391" + "name": "x-ratelimit-used", + "value": "20" }, { "name": "x-ratelimit-resource", "value": "core" }, { - "name": "x-ratelimit-used", - "value": "4" + "name": "x-ratelimit-reset", + "value": "1776789492" }, { "name": "transfer-encoding", @@ -154,17 +154,17 @@ }, { "name": "x-github-request-id", - "value": "F808:30ECF5:17C3F02:683C87C:69431401" + "value": "06BA:254BD6:2F34CB:BCBAD1:69E7A3AA" } ], - "headersSize": 1401, + "headersSize": 1402, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2025-12-17T20:35:13.577Z", - "time": 519, + "startedDateTime": "2026-04-21T16:19:54.343Z", + "time": 652, "timings": { "blocked": -1, "connect": -1, @@ -172,7 +172,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 519 + "wait": 652 } } ], diff --git a/test/e2e/mocks/npmjs_1455397529/recording.har b/test/e2e/mocks/npmjs_1455397529/recording.har index 9fb7d6b38..f67b51ab7 100644 --- a/test/e2e/mocks/npmjs_1455397529/recording.har +++ b/test/e2e/mocks/npmjs_1455397529/recording.har @@ -25,7 +25,7 @@ }, { "name": "user-agent", - "value": "@rockcarver/frodo-lib/3.3.3" + "value": "@rockcarver/frodo-lib/4.0.0-33" }, { "name": "accept-encoding", @@ -33,26 +33,26 @@ }, { "name": "host", - "value": "registry.npmjs.org" + "value": "openam-frodo-dev.forgeblocks.com" } ], - "headersSize": 253, + "headersSize": 256, "httpVersion": "HTTP/1.1", "method": "GET", "queryString": [], "url": "https://registry.npmjs.org/@rockcarver/frodo-cli" }, "response": { - "bodySize": 150940, + "bodySize": 173382, "content": { "encoding": "base64", "mimeType": "application/json", - "size": 150940, - "text": "[\"H4sIAAAAAAAAAwAAAP//\",\"7Jx5k+O2tei/SpfeP/dF3eK+Tb3cCkVREiUuoihKou6NXSAJLuK+iaRSeZ/9Fame8dh3nHgc+8VONFU9LQE4B8DBen4N4C+Tb0N38mHypzJzIgeUN1giXpm52ZsTh5PXybclvE0+THCWeiNJG3VRwNmQwzAPsBTFehyEOEtxKOFx3uR1koIE/g1lbljVbzXwq8mHv0xS2NWTDxNihs64yeskBjWsvgv46+vkBssqzNIxMTrD0Bk5iv3tLN6FJh8+irxOIti3WelWkw//NfGy0oeD6OR18hAAyeR1ErrD/2NklldjAEzrsO5fnDhr3MnrBHZ5VtZDTPL+wQkRZ4hx4W2Q+fPrJA4dmFZD6RTpMNjuxy37p0+lS0CY1iBMYTkU8FP9KpC6CUjRIesEhPEQ5ASgbsobdMM/+UPYzMmSyV9fP8ncKieAjQ3Lz4Q+hX0u8ufXiZOldRnaTZ19P18DpC6E+YvwKa/PS/CInH1WkE8G/WFheBckL8IQA+v6Mx3ABcnMeQ//G+Jx+LIEMQg+zx/E4Z+8MfCHyTdZFTTgxQD9YMfvJK5j+Kwaw388t2MWR7B8Mb5gvzFm9smKP1Dx59dJkCUwB/6gJqjrvPqAIH5YB409pEB+2Pj/q4TATeDkdWI3j3HQlPFPE0XCqmpgNQwNO0wH0TF4aJfSQUCez65jZB75Q2SW14/R819D54VlmMC0BvHbtcrStyRzmxiOlkqBHcO3KmtKB74lYOz+afbWgjINU3/s2JVThnk9qnpkFSJ/+APyhyG/1zHEiX8YkuXVD0KqOiuBDz+F/vmvjwlhKGsVgKpJJh8mGAk4D3cZ4KCAAJDEXJqjWM8hcQqlORxFKRKjUZudvE5qUNog/tx2JfTDqi77WZon12qWlT7yxcGHvH33+e0xEGe1fx9mgDCGQtak9eQDzuCvkzCtoV+GdT8YOQAUhr/p542/M23FDC5gDqZbUtLixtuoGbePlrRohrrsCUDdX8VA9qndhZ2b2rTI6qPh4BIJl3P77E3vWw7qKCJdNN9yvW7j//GPg5VCPx0GFnyMyCr0h6lE1AVpXstOul8YepRyXLGMNCE+7WzWLTjFbV2BnltXIXXJZF9kfMgndu7oWhQqVA/QphHUbX5npLuskHc506cSQ+bG1O1Ewm7HfCPYjzOVseZxiv5wjQm7rdqGRXfXaxYJfoBmeEs5uEnKgc6LFONfOeeORXd+HABNmgMngq4R3uHkAzY0EMa8TtI8eftUo8mHydvwby6uJPVlt9q9GNJK5Q/mXhzD/7v87/T4mLo/vGg5THer3exavdzIoXkwdIgXsmTowh9ePrZ3lsM09/NHUw8php+2Wt7nvDgXeH411zfhlOcTXhA34gJTT50kuPGlWIaiKJwUi8+y8qQEm617DXYmZg/yor/Bj0lhZS2CODrnNSo51zZGrvt6YKr9tCMEFkC4lrQsvfFCL90k3WqcO5vG90EeuRUIhYp1Ep8Zp+YlO/Q2R7q9u/QRqzbUFSlXiUYlUYNqBHu/8FcLs1aeiOfN/jbINwd1ujjRJ/xk7Pp9LmrZdNoIqkybyj7eHwhVPpsw6eeeiLXR2YvQ7WrrW8LN3YAx/3J+SS0J9zV5x+S9aXfgfO7UKT4194ttfhRvfc4mYnGugCJGi5PYY5xV7JS1uk2Pgzxtt9mcMNuTZ/orzq2C1fXUKs0S2qfS6T0vrO6ycMzFZRtwCEYsdPdIZkrH2QC2g7x+Ra0FTibc4lTTLNxzW/q4l894w3R35XzgFwsvrXc+s2vggailPULM+514vjTH1B3k74G4jWJBDviAnlp6pw==\",\"mVeBp5PEIIMmFBemVgkXiFtFn6oOtzZrsA+OJqR18qyN7c8XvhRwrKfrtHX3xJOOuS3gV0eD70nawh2wlBsl16JysQnE6UKg962IqX6Ul9Ox/Vv56FfBWeM6INupLp9381tfHzlI5DTMqoyd4waRxJh4XJmC1DVLglFsgbGsaTnaHyrZKS44cslW3D6iVQgEfckq+rHK1W1ruV5ZQHGlegerirKNhcSY0IZUk8dT4jDIM2hVRF7XFH5i3FWTZ/WKvpQOTvB8C1h2CTSjZXC0ig7OSZanttffVlWS1k2bUWP7Y0SM1NyUq+1UNIurnTKVC/Su1i+Rpqen5pj9cUj3x4pt5sOHcfyJ6uJHRuWwolzhY5r248wGsQHrJp98mPyfMsvqRVj+JzLs3JBHJFINse8r0bC3+f7y9Dqp+3yYDR4L0LAMAhvGg/I8bvzwsV79aQxEHiFvVZ/WoHt7bLzeQFXB8rGyDSsITP0whY8NZeYOmv/zjxg5ZO6H9RqCYV6DrI3aLEFTnAtdwiNZQLME5XEUy+EQdVyOJGjMIbHJZyvdXybv29FB68vb2/eW0FvycQF9GaK/ff+CDHZC7DAdP7xXF1b1B4jDf1DTy9tb2aRSOgep+zKoe9cch/9wIV/e3gYtB1jVnxf4l1Y9lvqvr5Nv0zwxK1h+tpf/yfvW10kJ86wK66zsv9s6+WE9/Qnbp5kf1t/1v+HLe2mOn1wGeoaRM4wZN/WPnvAIPwRh9RJWL3UAX5bDBnCvOdHLQnv5j+VeW2j/+8XJkmRomThM4cuwaSg94MDXF/AiyNJLnb0kIAU+/ExB5kQv0kcnQxicjJcapiCtq9dHCi2vXlyYx1k/GL16fRn0OzGoqtD5PGI2+lUldOqsDMeBMFYrc+F39cLIGY7O0LFeOUxdmDqPpJOimnyYfEMPiywxeX036DfoDMPG5E0zbgy+YWfEDB+cpS7MqkcKnBlDelil2SOEHEXizAVVMIQMppzh46gaBrI3bKK+wWb0jBp2WtUb7OoSjGHo7FG6dzMOnWPyDfeucNik1cMelXhkQ4/5ljCPgQMfG8ChwDP6Y/neSliXY2bEjJhho1uaZlUepulDMzbDPmnOy8wvYVU9kmPYu3LgDk05TD3OQ2LYh0xeJ39ysjgrK+Tx6xFFjcrGHjio6/o34MNhCzn5hpqhYwHyMsuHWQsOhQPvFcRn+AwdO2EAKiMowzRqS5BPPnggruDoWC5+0FwujB/t9bDXuNMfcmHHr34T5w/Do2M1HtP25BucnWFj88IqDh8FY2c49knm7X0OHoIfihOQv1V1CUHysC46Yz6mfTgKo58wmuwh8ND89j5jf8qYnrFjSb4fXULgjPHMDOfG+PcJ/2MyUFYPEzEzjB3pwHuMk6Ve6L+BsLRTe7Q+N3u40d/P4d1JfxiZ+jzBu4a8hHUdPjJh3zvaD+pQdW8Aw/qHvemxGb+f4nMd5Az/Qoqxom9BlkXVIxExZjRW9mOaugRp5WVl8nGBS2ANHiXHRpU/cTF8WIseG+r7It/l8D5Pvw3jLEuv3wmxH+dCLYclGBSCWBqmsRSMa3OdDB2rTvLvHKdvH47TtxhNoySOYgSJkcy36IzGcJSgaRYlUBbDmaF1g2zsDhXxAUEGr+Cjn/Y2+A3AH1zav75OxkkHe0O/FvI8hH67mOdj+Z6g598K9AzN/w/AnpFT/BsAH+i5KMZBgvQwm0JpysY9AiMYGicxlCNYknAxjnMI8hcFPuOQ/ALywbAvIp9Tvw3LLSgEbR6bF2va16vyzhnHbZBEfDG/o5jPmsHtuqS4O3/edQu+36CHeooU+Q==\",\"HdOhLWRHIZQu+txSiXsWSjsUZ27630I+liDpgtvPi5wI8XZ+R9E8l+7lbR0nWklE7LEUi826PyZn2XQU05cCXtndlOTUZYeljvr1fmcjUtuYFMS0W4uutIulcpmxTKw12P3SyIdDCZz77RAfpJfxryc+2dLveP5qhmKWg/vSumP3A71ZT7ccQ07XdlyWp2m0RVHEwvFccadzxaZhNMhjSAAwpMi2bL9Wz5IegDZa+/quY5LcXsxXe0cj/KsWlssOr3qHllZrVAWdKXH86ICv48U5i21rtVUDmw20wNt0WjkV3HWFkYbCrLBsTqwJ9mDPY1XDNDfcMzlay0ns64N8IGbbw4oumR7BF6myU92apo3d+WooGzKoJJJXj921C+BaQaVWMWlgtzEI3daNsEFeXpx6Ow0rjSy3C3fV3zt3ej2qxhzfcPmUr/Kccbi46ks7Vy+3c1ZKN+d26gN12iUj8WoS2cZtdqddejzWCBOSVt7GpWJNr6uIwLksDplK5qIA3BkP5vKa2d5kzUqP7X6Qj3k3uF4VaKs+t67DM0H0Zq/NU3/prsWdJgkZKjTXIprOCdxeujeSZxPD27UbizkN8tSxYrntraiKuK8rcXlILmsqPzrCdSpw8nZn4UZ8zPZufLF2qeP0Ro70NhHdUEUCg7y6cpJoGi/PtLVpzqvtNPLobRecG9ezyp4u7/y9jMVtEeOWhuxhYttElh3KJMYRdZCfhyU1N2p1dZmuVGT461hfRrskPUhr078h2yukq5VwbmV40JHTgi8vJRmH0cXc0Mogz/I75nKgkZiiasnO7s61va/Uc64Fp414k6gNte6VMxSke9pl835BYoa1QGOIKduR2KGYS3r7bbnuOsSpwqgwGZENGbFPD+cOHOq1XD2ID+Lh3E8kPr8RcuOwjovTBEQdD2dojGUAirMOSRAY4bAkYDmaswnWYb5Pbt6dnMdefGQX9cuDRoR+mpXwLQd18DLwgMf3l9k793jinn8d3DOs9U/k80Q+v0Hk8/oFZzEO7U/NgL0RfwMLPXyKZRjD9/G0F/mFIs6Sdy/112dGn4MPfMaM1X1ypCdH+tkcafTHRpLEsgzDMRxFfYvOcALnCBRDSYzhhuCvRknYz0FJ2E9DSYMn8hlTGr7+0+gS9qRLT7r0a9OlYYp4EKHv7QG/uJIhzrUagVANk3w82DcSoCwdSdPPkf7DRwV/fv1RzlXl0Am9EJZvJayyuBlS/XF0LX4K9PoSnGJpDHK4R9AEoAkPJXGHIWjaJTkUs1EbEi7n0A5F0L84nML+J5zCcPKLcIqDrXs8XblDmVjl1m05Ud1WeBGRcEpUema5niu4fLMiIuGkNgyP0jy5qOlrRVOEmHqnO4SsDW7pjk5Xq44KV2u9u7V/C06ZgiT0QkX0Qp9u57ptNAg0/CXGe1y7DqdaHnIkbjjJhjyTWsqHIn8710LLc3ne2onmiZtzWipe4l5dW4kFqT/uVyhWuzzjIM4vfh4JJ1ACo34rcOrK2zr3M+BUTPEIJ14vtMww5a1Qa/acUcTKJsJCDhNFRuibsKQDkAVyDu79vNvdiREukHWtqkXWU3fVBskZzSlgwU2KLXWu65MEX12Q1fHkMkuWdc7inVivxfrAFriYBrtBHufRrF9ssESjNR4E7T7UN2tXW7TF9nIkz0hBlmWDLLMoneJxZxDLpj1iGZvEEbsajxN5c1pYsRhL7g9H2Zbm7YnGgXc3zDtDcdo1XMWYfCg2U+N0gNKUQ+b0KknTikAWY/19OFcUXY/IHgOu3UkCcM730rqrdZ1pJ2mtGzcvljb9FDW0EtVzlBPWjja/Gg==\",\"9xMxwpFNSOyRTeR5y1o87bN10DZpuj7C6fkuINJGzui5HNI9V2FlHheL+rhxI5X3jbM/wiWswRx0zTWrvUysV/jiuPMOCyD4bm+6e+y2TBxdJiQta7ksWThCkdB0E68ZP2ou1iBviPP1XpB2vu/xgUiAAC489ri5qxs70k2AqodI0K5bRHYD+eDzeGoFeIdm8+hErwf5w/Rq7a9EypYsje23B4ONbhauShde8BXmJiK2yG8294VN8PJ0cd0zdLRM+a5aC+hikF+dQ2Bh5hGm+OK2FheCvMtyHYoORAgZcdeVzeTrZXpJCxHbc5F2vBtRzjfC4QroES4SeyNSyRKHZ08Meok2OWNfNAcfCdDdWow19yg3S4m+adeVt81RBSWXnqcEZkwWI5zbmaDjEUIq7OKiCEDQ2cxDu6o0JFYR15GVog841ZR5/fuCUx7GsahHkhzOkZ4HIergDsF5nAtRhmVoFMVclKY4+EU4lebdyz8DUNlNGLvv+Y++35NZ/cswK/5HoNRnNOpJop4k6qtIFP2vT6LCtKrfm/Jj4zwJ1ZNQ/Q9ChQ2ECkMpGqUxAiW/RWcEjpEYzuI0QVE4RbBfC6jwnwOo8N8foMKfgOoJqJ6A6pcHVABHGdsFDGrjNEviHu4SHgodmnBpEmVQCDxIeizL/eKACv/pgGrdisWu63VfZq7qfi5KTLxF9tjSmW/NHMuS0Lqsz+lhew9zgVrJJL+hemzT7aSW6BFx3zYYziFHzY1WebrOImM/Ffnk7wEqXcCwIi2mRRoQFOFD+YIL0k0t2pUb2Erc2Xh5UabyeRNtq1byVfW0cnuv3fMGybSamBA2Jm6PuxOsPICYsoMopB1h63CN/hqAiiTJ3w6gihXj6wFV7q50BDnFZs+hzQp4x/PNO4EpL2c7QtSxSlD1msiIxSKtbYqE3drtI3H098/nBbvyzw21V5XpiTt2e26dZA2/6erkwCDR0TBAd9acMyDNvF6ekQrfaFR5m291ZMyfMyVJYHROYZrTQsibIxRo1sqNuFwbRxLZ7VNxyZi1qd3OWHFFy/rmFJhqHZd7ZpB3moRVORFW250hcZutgspa7G4Ro91uFxZ6Rue2HMRMNb1j6/PauNmax2neZu/3B3GQ73SpjbipTsl2ZvTEBm7X6bHBGTQMOVeQ260/D1Agr7VMdpa5zHTXrJCbHE75x+kpqeiJ9AoE2TlEi7RDjALCGKkTzy4XpiMUOgquAdlnPEWsvUs3ZUPvEjKs0fS9NsjnfUDBfVIXG7CCurIH/lY9rFDcP9Ka1myr6f1+vEHD7JjURoWDZ4bQZEFQ7Odw7CWSeSo4sgIFzlEYVMUDVAvWgSKxv6KBPFePKEsam/PaBBfxglLO6nZFbybmEHA6nt4ybZNc3x2ytvvNNJG5M5CwlUJGnV2UuxSkGu/GCUzkZaxTpipUPL50G2URZ2tvbD+/Clyh8QKfPOu2FNNgwZtZuO9Ait+g2AZupLAUU9SJpCMyYgsInEuSjZH+5TgCuiCNEKfurvttz0jenLsLfKguplFxuGY4s+dYJOs4q8LlZdUtbVBwCzkmm+q+Oykj4GoPe1GMkal6g7u1c/BEVj1yhw0P8dxG1FV0MZUHoNoLxvr3BaiATbIuSjCeQ5AOZGzb8RyCIGiShgTukA6DkbgDGfAEVE9A9QRUT0D1uwRUzBNQPQHVE1CNTtkDUHE0g+M0SnyLzhiMQWkUwzASYygM+6oTVIMVvxJPPQz/O4JTjwI/0dQTTT3R1C+MpoZLGxzF0A70WJfGKccmMIxGaZaBkGVoD2MdHMMA8YuiqWGi/gKYor4IpmLxdg==\",\"NM81U1RFAZDTlGRk009u5qa9mjcD3xHSfZeceyPI1CRGE/Ng35x2flZIozY22VFFk0NbbjR/75Eb1wYwpfNO8P/eyam01TbeZkMjOGQYO0PFfXTodjFZ1K6XhSXEirVnQ7U/KMPJqepk7Mrab7P7ZXEPKtRUKW9J3mNj2nD2fjmncc8mKPMmVOYvD6ZIgsHx3wyYEmzyZ4Cp7LzTEVYgZOvc4W3rzDurL7BqWos1E10Wtz1iJ/Fuzjh+MD1LoemvBNIbr3Whl/y4lwSbVrSI5+bBdbmwq0VxsEAb151WtLa/Lz2IdyK2ngfdkSULrzDFm3/fjNfqJJreMxetTaIDDq5sOA+Wdt/pqnCydyWd0ChxyJYyezljm0y72hfa2WsK2QgrfDPawNz3wRKwOAeveLNYzN1Dls3ZNLzKKkBEpKQcjbRoTcUduJ8qmxM9T4gbQYR9C0f7aWlzVcEFP80ptZQLZom1Cr3KGh8qRctRabguTrKVRuuzEwk06VcHvQNA7cGxPo/X+vZTS9qRnUSZ9eK6svKaCg63jFwIwi5jFpeO17xU3xtX41Bbm6Oly04XnFau1nuj/YtVdjL1PNaUtZsy5bIW1TuS4ltisZatFDgba0eGV9CaerQUgVPuKgUllPtRCPHx5JCDL5a1SqNTjk4cNcC0NieRrhTuNybqmustqBfMck75t34uLsxFQ5xdiqaUEw68EYwt2MRNuFqAIXm4xCoq3mNwTeZrbb2+OD1Y7Zg2pEM88VTa31d5pVO1pxnSqqDm8nhyq7pdPWa7A5f6DisrKm12h7D1JuZN8hzM3UC+6r0iHFeZfM41R2Z5Miku18PJ240PYclJulpfsgNmTSsC63l+vjcai2jqOplfsN31vpWuLRrcaNvZrG9RW5sLinaRfHFQx1ECN51Ed+U0JS/m1D0VW5qvL3Gaa+40t663aJGRDzB1Bo75+wJTtk24DuoN74lyBIZSDspxJMVAj2UcgnM8QKKER1NPMPUEU08w9SUw9UPy9BVo6Gtpz48znR8jM//33bH6J79s9EQvT/Ty/wW94LPHySCKxVmaRvEBvLAcSrHoeJeNpnCG+jrwgn/9K0gPod8ZfMGfDyM98csTv/wa+MXxOJayWRsCEmdowrNdHOI2Y5MUQXkOjQPXplHg2L8wfsG/9K7SjwGYHeI0VhRxZHJUptOLiEr23mVWHNkbc6I78FF0TVi2LvabRRUYydmyVlqyiHd3WaKJi2kcgb0/xw0loWFLrpenbBlG4t8DMKvOkZh9QgQhb8aqU7XOrTERpF82WyFYJpW7FHwD3gx9cR0ADILJ6+OCUu3TAdWXveCFBEnv5/4ZQcyIlQ9NtDkAQrukBPtrABiW+O1cXRMcFfsZAEYiWwQBihAdD0cKRUOfwvyLf7eDmE4uES9PjRXta929u+y5pLjdXWO6Ngb53VSUOa2zffYCOXIBUxeX5s3RNnhmYeZOmgZBfjKWHb3IzYy8UJa0Xa4NnNTSKhyvbokMVkYlrQtthi5YxGJT9pS02948dLywM7OFWSlzvq306xK5aEZ/1EqFbJHTWR/lgbI/XDeKElQJs98ErYkHNEddZDQNwpMtnY8AdRMIphHOrFaUyx6u6IqoTzfrVI0vQadLPWVsrUAXYOcr/FQmAuPCLFU82mhV5S1L7Syvj75jinMkWBFLft7SR4IrUyNtxqtzBbaSdPKMGUZfUahWN9eVD6/Mjb3LFDg1KyzMgLn0DHjuXKLPrfumLHlh7hlyML4rFCt9mWrbAtmQc/PEIGgCreDUTM0S8vO4OHh9HCI2hrrYpdTwwt5ZS2KFIRjkxw==\",\"k0lEDM2pjkrAiozajUInwOvtTeDvmBjhJmsUAdCL0+4EfHe5jQ5TXr5i21Rj87Mxlh91b4IW3YXLpYVOziTF8iaxprVR5b1qgShedzsTSnGgpOB2mwtbTrEqwUSLVXtcPl4ip7yzcBaxYGsRlsXs5tZCWvu7u0To+lQwLj6eEtNbxOYVG0fXXKmovGq8KO/F6/iuliie1ycpUqnNRmYkKHGHGjtS3Lrd8cpZ3oI5y6lnKlv6ik2iGSGU5ZyeejBSdHyQt+WcKzDUjwJwynEOvUmQSX2rUFyPxHBMWqni+9W1/Tz7fQEYBkDIQOAwpOe4ju1wFGRwnMFR13EwHKIo6jqoy6BPAPMEME8A868HYJ4HY5505t+GzuCPt4UwiiVxkuQ4+lt0RrIUTtMEx2EchnMoSX4toMF+DqD53Z2OwZ9vCz0BzRPQ/BqAhmQdFLVdnGAB5bEu53EYTdMUx9EcoCDOMRhjY4Tn/uKA5itOyCxMJVFMk+BdRbvRp6KhOZGf9uE9pSS33R+myEInrZWh9xnLmv3Nb+4q4ezKXlAzxsGkSLDFdXDgWZSrTzzYYDSQiL97dWsB+LWxtaJNfeCYNZ8qUV5uSAWfc2Zxtu9phWR7Ry1kTMVayT+sj02nnX03bHt1uUtUkjAPFHdtj94CrTxNF0Vsi1hGSYu/BqDhSPq3A2gSdvP1gKZcqj6CuF160wLtROrOisdC7UpSpqUcAhmfVud8R+MX4YAgsUTC8LSfTkfAcVSmyc3SaIPIj1c8iZZ3/RZb9k6MkwztnC7cbGqkqe9n7bZ3dxKMfIb190jo4I4wyGd+uFz1K047QOeq36g86MwrFW8PVbnckLGSSlzjYrvL4nQTTzdMSVSDJ3TqZGip93g4eu4dEj6tZHk+XVyjzfycrqNmL9uGsu0u9rHfOgyl+QG1mN+umZTfr2DN2kWmb0ZA0d+CRuDmXX+QaxbNl1djjh1OyiEPA1tpV2s9KdYmvi7N3tyIuLIqjHqjOJ6ryc348LK1nGo5jyLFAswxGLOJRJtrTtA21LGniSUp+1A5U2eTA3qzXulUeLaOHun5C88ZTwhpKqjzvPRt5XTgaTIhlOPewQXKwwtdRT3/Ls6VLFgyxFrmT+g0ieA9JALpeDKiEXAILS+JTLVGlUMzN+6dgEuazNNpA9imA8mBFUj71si3sG2nSzo6s4bk2KsNcjed8epUsuTrSLbnaZcst2t8bol2dPFI2m8i1ieKk8cJLJtyFykMM70TvXYDWwvi2oJgxqtbV104z52i9201y/i9UmIK3YALWd0DsNn74cnzdouCam736uiQhaa0W9ja6iYKpfGET4iFvOx7+4rdaQs5dN3l3j7ntnuM1ORAnJew2afLleNOiwDfxI4QWaJjMhpq72/deELKgWYgkFaiRQWrCdZxOx/eyMoXdeKTiBkyUfQANCc3OP++AA3B4DZJA9xlcIp1SZQc3hhCCceFkMEd27NRD3Mo7HlC5glonoDmCWiegOYJaH7PgOZxgIbGWYxmWXI4QEOgKEWwJEegOI3jOE5/LaDBfw6g+Z29rfOxyP8AoPl/AAAA//8=\",\"7N3HruPoFiXoByJQ9G7QA3onOpGimzToneg9n74QiuxJV6HyZiITiLil6Qn8EGVOHPHD3mt9geYLNF+g+V8az/7XfrP/f5vZz59ua/1e/s8NZ1hRQAVFI0SCITma5jBF0T8aiekcLpIkTXA4hjLsHw6R/vzP8J9Dj2io9tso+A3EX+fhzEGTNvPdn2keFhdgwkdfx6qyPQQVafD1wW242ij1q7efAWZvG/fKMSCi3rW4vGHHE/NuhTjhT0vts8aB2VGVL/TKphtNeC2kOQShbhKrjv2BbfUyOuOFxD1Tsw4EdM+KBOw4ekpSpuK2PSsaJgRunG5hxQd6nJv+VQoh8//8C9CDwQT860DPwG9/o9Me2UoQLHxCtMIX5Cce+9wEvPf5acpzPVLUOyAsKdge/qtiOQmWyYA2tB/n98TlmDiKpVXU3asXyvSNYBe1wEzsEN6QSfy8c4rVgOlF72ojPsPNhZOjtdCfkxhodM947wmYQmmWUJKyVBo2IKuGhUeypPcxeMZNre3V09G6dJ/IA+iYLMaO2/tcvymG7b0wYpRJYK2isblua3FhkwbaO7WWk7bNTZx1hW5xJFD0nDNJ0WZn2sOFP1CFum5oxUF1U57/GCwMbxapsli5Q57tBJ9UYLJRjnM6TaT63fgVgD/TyFgy9IGkn0kafN7vuM077DQ9yF9y70UlnDY86ymqWzN4GjyhBjuVx0F31ZAk+VfRRjowTcEHSrQcDm5vB9rTidR9h2h1TpUwRkO3deJj4eqXNnlDwD0QkUJitED8mXRQBvOu8TMJle36BuxsMZHK1PNPsaq9wn2Fmm2NZKcBB6TrL0YHck91Y3bqc6N2N+cenaOLPhlLNF0apGNz3GNSu1rqFFgrbfUyIJsO9Nei8ZlpdSw/zWuHh2MkB+eokjlzrLrzyUiqcR5NntM6vrCI5SkDGWkAwCIITGeS2Y0LdkGlpTUg9r33hTLiY0eh2nXvYcbrnxlHzxIYFuWJKOTtHhTnvE+ZKpfuBeaRvzJESigwsNliiY9B1+XWiyP4EtAACPqschGuJlVFCe0woc4mm+lghCuivLYU4l/kmyVd5if0nMpC/l7QQ5MQFcNkhqQ0TKUklUMxieIZDMUIjBExhlFQnibQF3q+0POFni/0fKHnCz2/M/T8jKghUITEIRz+0fIFETiGUQiNQxRFYBSM/kXo+RvM89shz5d4vsTzJZ5fl3gynIJSOE5xlKYSioDIvChQNMXyuMgKiKDQH6OGCJb/08TznwNPysBonVUS80olzxHsBbCOXkQVUwhNVigju1E4Wr7fWLIF+DNrIGFpp8qpFzKlO/gikxlud24HHplHzAs6FK0IXvafAA8Hu4/RYMZujxhkHu+58G3qjAfEP+tVgMk784jiPkv1rTE183xHFHRtjys9fWdH6/FywYAD9RGDXoTxBmYes/upeKle+a8AD4b+OiHM3JDzfwN4sMYGcSZh7/JdV6ZwMOPRXPcOlcCLsjNbMaizhLxDsLl8NkYskFwJHz8hzGJAmA28F3SoCm7+hAZKe3ZWV7TPMd971dR7QSxT1g6GVj4CwBABz++wslcK/Mf5pW0kAti98jVr9uJKqoTRWAYiCOexLra9oAdjCW/BL/tH49Q8k6R8+NoaHpi17JN1MtPb60GkxAu/USR1oSrar2uzAoh5asm0O/XFuRlDo0+QJ6BteVjtjFCLZBiPzyQRvzjBZCpPiZ/M46qBGKA6ITrL6TVg752HLX7eBKG/z4gDg4CVS/UZFsHe0Gqbf1rSCjnWPGRb25VCnAl07cFarrIx73ZoQMPkHNwUog==\",\"tqewoFZ3pBugdtCC56tn8Q8wvY+CjTJKAXNZ6SHnoe15JD5Dpp2MYXg9UH9/4zZTZksCvC6xAartmk1F6Vvd3z9ZMZVd0wTjhL0iHtpqGLbXy6KGmbze0uCk58zo4Zdt7MjZS41sriWMydVJ4Stu/zivonDL6M3DDek8QEzDfy/buUGlDMtogxUJt2Ym+A66/OacDembKwJh2XdMfH9/zsPXELxD8az2wZWBxQvcAlASa+GCRmtbNoKiFt0RXLmmiK59lc5z+MqeJmNfxge4bFdNaGGJ3/uOImZWTAGIdHL3vDjdJ12hago+eORPTISWFpqGx2qUgnnDuqt6/M+sJCC2IjebRsylQCSX1ihFww1YUbWRNHoR0z9awjLH+M1CmEmUyGO6SHIkQ+gEQeMcoikkwRE4SXKCwAoKJVMoQ7/A8wWeL/B8s26+hvM1nF/acP4QHAxDcQyHf+xSYTiOYwRBUhQC0xj91wAH/TtZN+jvl3WDfrNuvozzZZxfmXGIOIXomETzAkJgKoPhhEoxKsOSGE4hCKGJJMWQAir+YcZB//eZOcT/FnI2LPZvvgCeGfYuTYJuGhXoI8qUg83E2VAcxne03fVR5EKiqqxayPiI8gUEsmWW9BQeuV7LvOp0W9bBkjMlm4gJ+z9O6oQ/VrLgxrQ2hL8Q9njGZ/mwldQxSMjes9q7+RFQiDkl25MoRkapGNUVCXr3qvcqRRiCr88nrIBLTr1luU5BWiXwnHeS1igE9R+HHBxHIfSXgRyBgf5G3fsYUQwIFps/rdj4OKxy3EoMw10oBH3mXoTC1l9BNDTvw4SK6hnV2TPcP5DyBtPJBhZeveSZkE7P9Plhei4rO/oTObZLnwUX6dY2X9kXMeWS3xCF4fAv8UI+55WOWo65geM482UbmSgjTZ3kjJXwmhzIr64BYwI6pmBWhGR6fY7iXjGsn7Fp8cmgdaA044mZHwY5XaJpFv1YexEnkDPX2RCt2BIogT93eS1eQgf5/iu6uEHKrfwBfVa6xMEF5OuShGuQgEMpQ2KZTHbc0Y0q8+BcaKjDsFzv33j/Yha1bY5lOqqreSGS+lkps51GtWA4i9lQE2TiCv0peBwjWrHyrASxFJTF+xEkDz05RW8MsTeMHTZUv277E/prUcRoJRK71OAzfnQ2SJEg3lM9WHdBOdLxgYtP31VVLurbWNMZqnhKhh2YR8NYn/MOY7UzWwqSAx5O5drAlL8dXVwYQECJaYT3il9DhmbUPUFsTKFWpqzbKCts49Om5QAkEN2wOJFQYHFAO1GkUI0wNxNPAy1N56TtenrJPBlNsh8re+o1K9LJteWpyo/zBRtIrtmnxM25BI0HcFzNhZAeHdtsBL0OChJ5zhGrmvPy6tlsV3aQMLZXXWVsfq6EjSTiemRRAGOlqS+kKUtTbbx9aYkaeLtEckmA/s5mrSK6HnWehpfv7bh3ix593j+P5qeBBT2WULi37JvuKxUDu1fIDX+zLdzDf7RpDX+MJv0+kJPSFEImWULjOJLSMZIURIoVMVWkOZRQBJZDeJYhyDcz5ws5X8j5Tup8leerPL+v8qB/ZObQNIFiFE1RPyZ1EBIjMYiAaIJAUJyAsb8qPfDfkZ7fLjQH/YbmfKXnKz2/svTkOBUnOYITEI6nCYyiGVbQBUxDGI2RBILFBEWS9Oc71z8rPfB/Lj1PT6WvK8rPF1xyaP8ckbIyHLTjZBZo1rzcoodo6pj1Qm1eDYk49QFIHaSxZ268FlUeHZHeZArGEFm3poS68dqC+bORHSnNjSec+7kANHNSL7EXiGlwtEzy1itj1ZKbuw4p8GSpYQ==\",\"apbvLhpRAMp4ed4DfI15wRZcJJXL5r8FOwvVRJOc16ugWftfGNnBcQz+dUZ2BDbu/ob0gNeTYYZddVAMfEHWXhKHJbdkl6sASWTiKYfPwfvxTw2ljWeTvOLc/1wlDpj7K+iSN7wlW6hA+GVfnSS0XgalQ1qy2BvBX05x2AjC3AUhYAUNvmsMRhT9Iy1p0zPnA8wpwKU7mpaqzbHnKYnnhLRl1Gya990sSBGwSGNwGjpvetuz7uOW6/3z+DTDvYatVcOFc03cTAff2/dmJDuXRgfmloGAR6cceFqV1t8ezYig0JBOcoxB/rnxR0prEQRpFAhzO3vlEXazxI081zK8LpGNnhymGPuskFp6g9tv5Epi0khG7qLjT3hPMd2q8XRIFuglokjIdMD6hNxUNsZQ0BffriB1WN1ZFks9WFcUlfl1iWEOhtn12emSXBbogVxIKsActx4srZDwtxYTaofsagaJ5wOWYpuRRC0xxeFBCNPzLQsbmtcfaSpT6q6dlYeHFSQnlL3uN+TpLZAr6QI1/WiMLbAw1ESVkSWXIegnOIagV+Cz50dKeDWnyqMbSniDkWkt8VnQN1KdKvr1Rpydp/wNfAixekuEFA8Pss44Vn3QXlwtj5/1UDKmRpFiL8JmHLCS7w2IkCMVSi+1YfE7AjXntbfBFKHvkDO00FBgfFKqKeT0z04VDXF4JfU38CaouXVFMPA1qNUfoAt0Sxlxa3c822Y9jnoUcaLz+9AmWklbIfXz/hedKgGLxOmlQuFzLYBuyUfrUbsLUMKhNezhH+nIokUCv5f0IOjPPw40FJMEQsdY9qM7HcUyJCZhnEbTBCEgiKa/0vOVnq/0fKXnKz1f6fmNpQf+Q3ooEqdQDPsRvoMSBISTNI2QBIRjf3ElC/0byvPbGc9XeL7C8xWeX1d46IzKiR+FslCG01mS0ClJ0hQNEXlOITlMEjCFwjmd/tPC85/7zoPIaaJyZfwCbvjk05cunkzxSMP8jPDL3yEfjd/y/MizJwZNGC9psy/yTwq5uRxC0+qqM9Gl3+ibf8V3sOQaG47Bn4Yrc81Zy6GxeYOwPF7gdlCUnyM70QFpcFFoRl4c3XQGrcHXj/GLi/SCc2Oho9sRqd2qihiXvMZ7w1uO9D2qiU4Z1XqWUvuv+A5B/0K+c5J/o/1qZkoQeDz8S+Z3rnlgbzeBDYFeNVEZsMTrZtjggCRmvcrK7m7eSGFNPvfnzKndE0a8gFfTNKpJoKga17PFpil6MQ7JzcBAboOvPzlmgSvhbtBXWdxsoaTipz0pnA15WgamHMamKKb+NV5TwE1e+/bZmdPkuehXYBqMs3d3GfVE7B0vnoIsAIZ9wo37MtNst3pzFT1YRRUkB2ScaXZlOCunFo+WjW5KFs6q3DMFY2bxbo/1Ub7JtOPz/ENlDdG8J3uQH/ELC30XMP1nvj8OLaxrS2II/mTR9eyI9H68ab8MyBfZl+M0wJ/69cuXL8aW06p7IQavYe7z6N+vikasEVRwr8wB8RISl2pzhQPAHjDrocCJBl5w7lO/Xd98AGO7dME0SEpFdCNeIs3etBkoN5uXFl0wyCvLXGfPp+qcRL4I0zsrBrXuP77D27RIXfozovbKV95Ggxe8LsK3Kw62oB9lBumvcoM0aJ7XzoZfiePTXaU4dDowP867nKZZhZhgI8viN6+X4N0EcLiAutusY6XASG7IzIOHeG3H8Dft2kQj7H6nnxzx4/y5vbSSiqyjmRbbT7h+6bp6Y9tU2m3QnnXUWi98bwtr4ceXobE1y/ZPxNOoCP68/+LRtpvgb4hZCdRC9h4ylgYbcKgohC4SCg==\",\"Q5X4GOHVLs+diWu9kDxvqIPJJXv9ZA5NOCHo4rtNOlmNgVucp5HDyRMd7t7wrKw8lz98Z7jM3yxzJ06xFEEgOCsKisZyGKJoNCELBCtoGMcJGstTIsnJr+98fefrO9+VrC/hfAnn1yacH4CDQBCE4DCG/Ki3oiCMJigaokmchBGS+muAg/2dlSzs91vJwr4rWV/G+TLOr8w4CZ6gVJYXcAxncZFRSZ5geIFSBZHiaVakKQ3TSA7904M62F9ZyeKt96uqW0rJ0xelt/ECoL6eyCCOIZCJA1i62npdRnlpxAcHj9UzZd6FtFg0aKlSoeRYPewJ/sCea9C+w7yqLgKJ7D9tyRrDdjLGiOLWqoa8kFKYW+3XRXddocMjyd72V2tz0+M4SqV0Nwn2eLNde3Y7zUGB33IHzrr/eCXOhgMAiWKj2wRXzL/+BcghKAz5dSDn7T/+RksW0TwZpj6GDH4grMFvzts0BNBWLdoHoO6u96iMqpcob+GPT0LYpq3ofFZq1CI6SIN4d7yKIYxQtcMj1S4jnB9WxJ59wKirlQJeHMpmKyDrnt04xj4ROHr56I/zwNMby14izFDg3+KxTgIUqmDCAh7oWqanvVZ3TDh7EuL1cRmmd2thaJAR47fWJ7xZtQvGICp3LRop1iqcfy2TIxORzzOjgcFxfO6Dk9dGWuUqfNsg4qagK5jl6+7Yz0oSp64z1Cw99575jvDl5+OeGUa1WYXaAOtEZL6zplFyocxdO8bp3UNyU3NpIfsz9yEiAjF2YNUHp4SujDZVY62k0jz6F0zRbH7e02I9vWzs30Bk8++LXUFzZYcD3z4tT4ossfSpSaMEKYi7Gl5RvRtDVGC6IJyO1RPyit+mGJDZLNtp2lFbn+U+HC9s+anxLr1yfs853EZtIAlSKfoi3W61pVBKs4hUbkGGhoJ+9TT2MjeCg+86Vd6kpiIe78/nJ3ARRyi3y3qGzQ4cgru/doHHgxPZMFh/mVSCVMRNwXGd4PYYzWLQj8Rj1gV2/tSIz5mfukjC8ZanjrFjwaxLPevRV3nFo/EXDJ0PZedVX+Wjt/mcnAUEahCAlgX/vH4xd8JyzobdWZ1Cot/kZusbj3EO60hHxHKlALaiu/mIimclduQWFpm+KrY8k31ev4MsuaYoTWHZqUq/wGfPnhuvxhZnHyucONf1R7ZOQejG7wU5FIkXORojaYKjNAEnSE7GEEzRGIHHOAWnCVHkRRZ/V7K+kPOFnP8Ecq586YefCvEH4vxKsvP/tTl/R3e+7vN1n89dykd+YAynUZgkfyxpwRCGQgSFowgJ0QRNkH+VfuC/Qz+/3Y4W9t3R+tLPl35+6d4sHKaTNM5jLKXJNCcoAoZxPC8QGEkJAoOIOE0plMr+cfr5CztaQ7FVm0KbPqzt6ALZb3yEiHyU52hKx6BpI7oFywdaPJBUiYwnHG0nyabmmFGPbeJfrBnS0UL4TN4XKkWHV/RWyfz4kx0t3jw9/2nwWMXKkbq8zrVhLaq9UFSfRRqgVnodlYpToHfE1Iwzktlkh5P9Wpzp5hjNGVBSE8a+y95cUdqtd49yDUrQ8W/EKuMkjP46vVnSa5b/Bv28ThsEFIBMVXermfM83/REQS4cYoIo2KZ2ktDjINLckdqKpYgWNADuQzcqdz2mJsbsjJRL0eQkjx1c35HD0a76vDvImdph5Bikt2ecLz222TvOKDzTsPrzHDBK3acznHFTJwcIIwchkOUWVXCPt+dko9MML+zJyZ9xd2eOHeIxKbwJ7IIUYfnE8orF8tolFXFsozP3gPB6/N1L3To1D+vl8NbUs44gCogUCAZxGA==\",\"0hB1kfiqwdr9zICMMAQNJ0Ri8FMun7vrKBZnZBLriqp4Y0Ie+4+n54T1DE3S+n5P+e3OunnJr+v+nFeq+aHED4bSwtjgT68SZSkRgtNIuALRfZtKtLLIYsYfX63Yhysh8UpRUqYLF5+CdCsL68OAkElbI1B7T64XCvoiPjfn9bqdNWkBvawv3qZM4ia41bXXNGMIsXsc/SdWmSGa26ooNJgogh8FBR7xZ0aYenFV8+Ngp+61l5nIsqaLJq4KSdrosb24ZrkOf3qrLkaKeTMbE9yyFzfD364sUn1qTkIxvA+AFGfmFU2Jos/m4CrOhPGlEWsX2D559zMDZS6gfEcLlfAto+oSgz4qiE/xLA6YWhsdcxLEIvKzOdkYIVbodOxK0RHnSWs/9MTF2wKzYLZXV8wP+8Q395xjHbDsUPu4l21vDUVBbuZICh169GMP2buUwfFcy58dO5+2N/k5o8Zj8BpnMPpwnx5v38GukOLeJ7T45U/6CdXj/Zv1ZuEYmdMpjhQQhpIQAeVIUUAUgVNQXqBoBmUUHqPId4bnSz9f+vmvoZ/v1taXfr708/Mu5UM/BATTCEGS5P8L/Q8CJnGEhjGIxmGE/qtFWtjfaUzHfr/GdOzbmP6Vn6/8/MryA+FQlmdkRuYYhCcYlEBonOIYicEEQmdoQtBpgZMY/I/LD/IXtrdOPH9disBHoTwKiNttaqU+CRYL5cGOLhQnmZodF7fMrdJi53nq0FekiDDeT+YepXxptrO2Z8OS0s0cyFnDPSD8T7e3eLrHbbfqmhgsg1nUWZgssZQlTEJTr9Ati2e1Z1o8sxd3KKVDwG9g0SshRezjuCsljQkrTDhRQcVx3YUG8m4PhXVExv4N+UF+oaEfaXSGv5HOgwIHSHF3gRg+PPAlDb4hVj3Tt+9ZFHju8CvtxYR7OMKKwVoPPWihSz6FSNVCBRW00Fpxk4Kn+g1xQpCnOyCYVSKcSSr25PQkP23By4k+WMDhOQxlpsEi9imkyirwLqehh1oFFlph941zu0DW3JU97rUyWlFP6+uMQ3wc598CxLFugj1Ba+nXz/OXyxa+9kFL7YR8P6ohaV767b/P4WGzuBmqwKPF1/Rd6pgOhs6qEjyPqkMEBgn0kastDLOXpfO6GG7ywW8Hwl0AkuwLn/ucjTn7MpL33Z9mYITPFvYkmxuYXQcZ2/4UimXZfpZ26yOFR+gB+qS95eWuoVTOhzwofXJju10SCeTkbzWB04Xjmowk7fas24/8xIG8Y3F/TyPUuFNxLiCy706dl2/lWasEWRpugIKwh4Dxexzl+lET6kNYh7E6P0MvjEghPqLkxQFSmZgGU+KnVN+6512tD7fcZFpRt1ovkQ2lptM5LlU6QRJC5D36FFLhh9jShms0xpj5rg6+wWavCdmFOcB1KD0QqqyCCyJOUgK83LLzVH57lBt6NvdHnowlv2pJuRKm7m1RYYkl15TFNfmg58TugJgAaWtkpHt6NTSJFa6jzVJVuUNcCz+fP57eCWoKPOty3pOLVDmxK27AACS+qqY9gQhUMSM2ST0VrKsuCv2jwMWUrxb305jOlzqoqQJCN5SWSrZXsFs1Y8KtKy7AMT4nBNhP+UFVevu95CfBIYzCk6QoUgpHoYLMCgzFsBgnsoIq4CJO4jjDoeQrP1/5+crPf4v8IF/5+crPV34+dyk/5YciUJIgiR/rXjiBUBQEIT9SS0mU+Mvyg/4d+fntMnt+XvJXfr7y85WfX1R+0DRNMJTMUwJKkwSDMhKmPvmbFIQTKZViBYWhGI394/LzF3J7lpSwbHNexEHx1uOQzPNqMR5itIzMKg==\",\"Xm7g7DRuwXsN/EDnO+IA3hPFmjcyZgRdVSRpwgQiaZgW6609k1rROGRtMX/WwMWdUC89Y6wpN+u5DbYOQkLYY9pVgTVN5qpk8z2iPzopU0qlYpSx0wWq954FFdzHU9C1EYsiXqAZul9puCLTtIT6vnim5r8gPyj+6zRwyXBx/A35eTUsw7wJU0oSsvJH0cqHRJMXZg3EqkjdsFtUbIXHxKe2BbrGAuQhU/jk5hQDXgDsnYdDEMilk1/kNU4KpTvyjJivEXwXHma94humpHXCPDCtskGrSqEN4s/MjD+o1oOWjz3a9/PtTNPUWcnEaDyUTXjjgbKeBOYsthMkNUaDvFcT2XD/foHm5/oVwRtfnb0XJS/QPf94tP1W5jBcnSHgHRShDBsNCVA3s/c91tcS6RhjOaJyhtInd8gyfZzZwj1pyefLX8PLFI3QWA0HDjH33TCuCikUQJkeKdF7rdGkMlGwJuNFQn7kiFSf79dbzMksFoWnpWja40yYs3wFLkj2LwpQ7BIF+DOyhU3oe+qQvChAm+DU68+6GeKkDBni7qC0SCxZai/mgVmsOkWvmXCeGMKrAXc9DKEFWJlkFd51utfcEOoT+MiHyPUkEGMvsDez+XxBoqtQMP8idqE2MHMHUbQLOZTuxpeRVjVuD2PMaolq4BRIf+Qoa2VITVWFfaAmg1+X15tzXtQT/AoEx4/QwZ2DFrc2svEzgYsRqELWNk75dvnIXcv4PEu3TKDOXbFI7a4y3AgfAd9vF6ZRWkVmbthHAYDPAGyfsQ/jt2slO8bdnyr2tQIRFZw70x6FwV/ElW+d6oFkcvjgznysWsh6VixB8M9FjLbm2ZGulZWa1ov6Z12s42hvpq2UcNadfOMIG1OEtE69gAn+RBQad//RwAVkxP17yU+WUhSGIihZwD/2veiiwGkKockEJRC4wCmcwEicwr8zP1/5+crPf438kF/5+crPV34+dykf+aFpCod/fMv+kdQMIxiMwjhNESSM4Sj+V+kH+zv0g/1+9IN96edLP1/6+XXpBy/gJMFRNCdIGkoKFEWonEIKpICzNKNjGqFzuqA+F/rP0g/2n9NP6dqKa9baCaqIgJjq+LrgsE2614NvstdU9JIowhzcae8xyN6vznxyOfYuLbw4URoPpJppmToOJAByJScykzSxEfNPy9c5KeIpF9lIj00xa4BP6IKxByduMEY2s3kAr5G8BiiHu+sH/agwPex2YNvi4kojWrK36LhROyB5qUjBE+CGfiUYQopJ7V+gH4z4dSq5ZMJ6/43IZjxiQNB5KmW2+VnNX4Jogq8DRsauRU9qxDdhljqxTLETr4fqOTxyrvlcAyBPa/3KPUUb2kBaqU4iyBuXCJm0+5YWjnqLsrFrT8Hy9TLY8oFsM79SOQqrhh/nF0JwD7dqTUViXt1slw4weDy70jx+z883BOjYHgiiw/CsOZYqXe8mfr2S3oKVz/N3c3kz2GwW70mmbJ44msdeXQky1XbuV6KkTHri1CvQ0fWcnOpqZSu1yYuiMvRn+wenbsDgL+Z9xC4L1PHV6iIe0Rly0DLYiPy7uI+5GyY0Kblkn1TXLaj41JBNzo+f5eOU82zDrK6Jq22BEFrMQXjhiZs0TmU7aSrncaCtb5ta59FnDtEFDp+A4BdbfCKXQQk9SCECB+LY9UNIvMQQ3AJ671YTim2eGIs/MHyojVGV+2W3jFNHTO5xYLmCfYZuGj0eR47vJ+5YHQpcXZluyAG98kE5J5va2ir6EcNMExgVsi9frrCHVkmw/DI+SUFgPThynSIY\",\"l1Btb+7CPNWnqZXm6rwEA1dshPPJcJX3d9vv/lsmJztTo7aX68cnsjlrxGO1uomKNLd1uUeceZdd4JfAe3pp9c80ffzI/WLfHV862ct6p+eRCI50Du5nBodwDCAiDrWXRbzbWF3ZUp6We3B4CBx1C7hSvTr2HDei8hUVReINhvAZE0yeKz+Vbrh7is/Fj64DCCGrrp9WW7vpVerMPjc7WuD18pN+iBjwfi/6+bFHmhUJjeYIRqNQASc5iaYYluRITGMURCApjCU0/qWfL/186ee/hX6oL/186edLP5+7lB/0g0IwSf9IdP4M/cAkiaMUBaEwCmPIXx76wf+O/OC/n/zgX/n5ys9Xfn5d+YFjEiaphIzROKZTmMZTKo8hAqfxosAKHCIhiKZoLPnH5Qf/z+VH2KklFEWqME0y3QWiv8/ZPwB22KfIZZT3rjsRKx0PSJacbkca6q5UrbHlUOL1JryLYekHjqSmh/oKDwl6oi1a58yfBf1AuHq9iXYudVV6dXHJ6I9BGZBpwGl560nUHElBM+rQ2JiaFeBXLlScoHIoAo+ESlGieU5YepH+oxxigABmX8MLA7OPfyXoByfxX0Z+FJtA/rr8TPTjAMEEhMTgsZoRincE7Fw3oxYYHpsHoy5VNNsEUOblNmUg9HZvU/rc+Qc5669eYlQHzMTRdlS9QYYJZaWQ21vHm76qPArwVi07yH64WfWwnpQTukC8q5+glrACs7ZGhrE3ArjAwtUkdcDJ1ljPdBIuWwdaHp3YxaW/NJKzwLAkaEq0yHlUfOQCXdad47jgaPvt3PNH4h46I4hPR8EfUa3hfa7cEo6cVIZFefB+cgTnRKbqqmbzKataapk+ZJbrUkI/cYMnaGs1CjEMOP9ijiHSbgKxyCDL4qI5lzjiiQu2gCvjROoztFMuRubrWEl1CfiEX4rKtxZEFG+tPtb7FQjMdhssc/sx5Vonh/NmDWuc7rO+F33Wpc5kyKBqYG/NFQiFSKsQIm6dL+bdSwWM5LWXTLze3CqeBE+V2zqVrhFCGRIfP8vcW6dr8watq7ch2y6e9uk1p7fM8rE8vp5ps7F+3cgjBFGpz/oirt2CNj0w3XOHj7zdx2hDHY4G3DDcgyXxSbxZxhDkR7CeJA27oa12ZjGtWMyBBcdFCM+dRHSJxfZ5/R1Gq0VnoYVO7evEtDdP45tqFgltWMA+bFtqARGgxmnzzaR3+2q1Icl55LiSW/kMjVH4dTQo0XY74B9VsJP0WiNPY5+Z7plMrlPbgrbdLLULUfWm6NxZUGUZZlUprM/7B7vH2bGp+g4Z7inOTlnAawFnPEDmdsLo1UL9lJ9ls+bfS37SlETJPEbxuCiIGEGxDIqzgsQSCqMxlCyyBMXhDC++8vOVn6/8/LfID/2Vn6/8fOXnc5fykR8YhiiUQiHoR9APTcEQScEQ+qPRGEH+qvwQf0d+iN9Pfoiv/Hzl5ys/v7D8FAlKkjFa4AlJZTBC4yhaEFCMokVO42SOIygUkyT6j8sP8Z/LT9DVr6FSgo0uBf12PSuk+8R6q43NoIisoXps38fqcNyoTPwtBU/JMwSUl6PWVGUMDmhb6cQn+hh6X7z2njkWu/X+rN1L3JAibDNfG6W1m5ptHoZgjbhT4PqqGnspX3Ku0Hx7n2CmFpj3gxtIF7KWoebFXh+lkCsaraAsFNLA1crHDiCnaOf3W/kX5IeC4V9n3UsZmOffWPdSKhsE8zYC4SB+P4og8CeyvHkQ92pSI15DU8TiLTR9YxXUkxgdn7qrz3k8n8d3CgxVSY6eBdGszPaPYFaYZG4ZxqR35qlG0w==\",\"u14Q0Q/6CTyWoCHaxi+qn7krHVbsHKe1z2t6u7RkaDGrEXDGc0ns0Ft363GNKm/14UI1YHSsRZdHMuq+IcXXRw5W8KZ9TkzOFigQ+WVeLksf9aCLrAmT20urmKpQsxViM5sl9P4mone4SO3WnvRHPpieOyH6usEGoYcUaRb7JTsRvQH4e9nVkpmTxHQ0BaVQxhVSgYuu0sNBco1NvPtxXkNt/8G9VGFhFdr2rqsmZ8s0ZkR3fAGISkKmCrthRT3W5kVzFnpsq5TgAVFtXz/OS7jh6ch52/G6EAGMvBI9mht6Kz3KevPDxqryEHMd4AJj/zymItMlb+LA55oJH/kAm/xczA5SIw5j/PFJhOBI3evb1OkBKUEXbk2aOnemE2yroAK0e1+POzIjMsY+QTs5wAGQZgk6tF/yrDzbtXnoe2nH2j3gb9DiseYp3GALUJNexX0JEH1BlC+hK+NPxPX9eICmaKyhbTjubM39AnRLifPzy+DWRqKJFjJ0BDmaqY124ynb8yKlTgxN7an8rLl/nxZjJJOBkJz4GExTAt0Cg4RZw8d4cndYaIAEoIxCX8cNc4zZMj2cpJS9+bx++CXeOuxKT2QqxYBdxKtXq9IV4pjRgxsMmPIP+bGIQ/7N1r3QJMmThETgHCIhOM8JKiNRkqQIGEcpCE3RIk4R6is/X/n5ys9/T8Tzf3e914/P3c/P1M9Hpj4P9AWhLwj9xyBEfEAIgXCURjGE/vHjH03vGIzjBAlROAH/1b73v+FBv50GfS3oa0FfC/p1LYjMC7hIYKooSDpFSZiOMzyhC4guUjSmYxhLU4iiMvyftqD/XILYMQ6tYnNEpbN02ASenegRt0J077Ej35NiBaWrzxmXhYxTM/AMKGhweBOmksASJyq088s1BbevFyMTr1Qi70A4/3nPO7UJ/fw6ZixOt9oajNrV9glnbX3Sw+l1V/3Gkvw7fTpvWymdfcTcLkWgGI61GmzBU1r10sDMAtRn0Za5G+lE+E7MPv03JIjGf6EZoJFw/kbZV+KWIKBEZHDEN8E5pn9AMQgvYDrhDVWNPALFU1EfeuRt0xtMJavkxuszw3IaCpH2XcRkIBELTzEHqvWAmyGncw1RfTa9bu4Icm9/Ducs0JMawODZAqT0/AQHqReLPkH1mhpKInyqeRKuPK4p5rSBFoHV6ab123kkaUiunfmUGXeerH5rDvoIPjNEVK/o7zp5AfXc2SwEB+YpEAATP6aAlnxUZZ+YdUAd33fqFXNvndamR1owdY9Nn8jmEBqKuiaFI/fu2zIgx37NhGEgJ20+aHcVXpjxrpDzLDRdfz07HmYmRqQSEHj00o/zs++Ry1YWiY4cjVtLYGYG+S3tI/py7yXzna3eksD09JPaR7J2KZ/Q5DSy5TX8XL8OUvu1BzmID3Y+KkXeW4/ATS0Cy7FIc62FFS7Bc4ynOfn2qM1DoL1lfVmm7MA/23eoOr/gwp9wxivm6zwfBnv1LoQ/2Dj2j7dBjxL2rjhbDBIzo/Jt6nO3qSovdbQf519uDqybWg++LNgU0OJ7RLL8RYRBVcnFqK77ruCnrBGCBj/Xo+sok78B2/Yh4zPDNIPWfMrVSge3PWnAoYvQuVGME+8SovY2DMYJpoV1mNXzNQBjNTjVK3VUTKrET9nYkkr7jGqbcQzKca/kZAyX4gro/Uyvh9a429Ac8qOk5UFcnGWtDuDqgHGBFNH7RFZbQRFlcm+TtjjvhyLcuCOzo+5mIUZlqObDpvBTgiKL/M0inwuMTNI8QaEcgcg8J3AMzTACQosEyVMKwUgso1ACI74S9JWgrwT9l0jQ/4GBvg==\",\"0vOVnv8LpOen88AoAsEU8aPcHaMwnKBpFEIwBMU/Mah/gXn+xsLXb7fu9V32+jLPl3l+YebJcORHgzta5EmOQlmSZFBCE0lKJHT+A3+olKBpBIH+Yeb5C6te6uyis/AMidchF86iQhXUIASsCFspmDsIxEpbFEmbUoOxS3pWp6lb5kRd4BNuOTMw1tG5yjYQnu8EQd7KCCyAx5V/suolJGJcb2GDPBrPlYQ0OcR1C6ZlihMQDJ5x95RiTwLyngOYmgmZEfaKnLyLR6bQE6C/URHKiel5P6m9eij9q6h1vJpTnvk3Vr1oGP2FBn7Ak/wbIT+x8GSY+txZbHhBj6VWJB5Diduoz9khcc7lwy4AHkZOF7209tX0Xvrik8/sdQoEDJT6RlUzI7AGW9gQb5v0mhKSqMln5UcqdT2e+TieDDkZSwnsw/X0ZF/6NINll0JG3unCpRhpdr9blmRfNiVase6w7+3pooj7BgcSl0qyD7AF3NhG5Buc4uAPszSARgwbIqnbu7aiUSF9FpyE5xvt7Ikt1k0uRqtixIAM88IAko7ssZrPd+/Rjp9Vr8TCb14mD9owHSGgi+hxNAhMepPhnoOCVQJpxa9uDecrfhx1TTaLnDK5SYspEH2YyYwkXznqCO7S+xopRLyPypu96RDDzrsgY7Qbvw01wHKUhN7QWND5haHugAOaz6oa4VTP5enqUYClqtXHgyDgKmawhYGDQNVEXQMzLbLlTDg5qlm1BDK+BA2YlZ+rdtOrfZlruq/rE5Q2ONBzi+1hWg08JG9cQYnpiJZqgbHRgbOEvZPJeMqTnrYZ+bMq1h9rV6K+qeWSYZQnrTkX682GS2WZ5G6viktUvoZeA6oy7weAHKy0Vm96eoMY81n1kuH0LLY+wdmQU1JoxQ6/5eyM6W69CI+LtNth9tiKrHM1PN3meInu/oIkaPX6T0jPAMr7070TPgTcWx6fh2rgAJ1RwMhcMBu0CdC2zehNMZ4OFjiPkeABYMhr3U19Pv9e6jdrdZiOGiKkadKiwnAqpofdqE9NpgSR8Ee+8/jEg9+LeSiSyjMYy2EshlA4ywuYTDM6xwoKp1AUQxEYxxMI+Q78fJnnyzz/JcyDfpnnyzz/VzPPz/0uFEJIkiKpH6HOFIbCJITjGEQhMIz/pUznHy/PX2Sen6/ob8Q86B+/jl/m+TLPl3l+TeZJ4TzOMSynYwrF8BRNsISg8QynspiEYQTCIJqgiH+2yOvHX9L/mHmMpwVvxnmiQMig2FlNUEi8hNF6EZI0djbGME4i+SsKRPKMsgbHc/V7t+h16+/u0OmqwxPOgu+oVZFmZ8UcRlIV/NNpHk5Rd0MzZBQ97rxnE6smWHxdyzWaFc9sDFBdHuSqRFMG/yhw56Ys4uKkf8upINHqbRjj8HYfFL0ihIcJgAcQeNG8uFn455mHQCAI/mWYR60N/W8wT2EzIBjRa47UaPJWSUIPshfJQyBXGFfvOoi+FDJb9KbPPXbUaA0h6j97Tf1ibTeAx21Oivqy+qqjqNSEgLYqkWMkbPvp2UjZUEt9HwiJZXkphxi29u+i+UwDJZUBxx74IlbS0cAeauVe0MWsfwQNRZGhQBqNAHG0NixL07qp7mrXEQeQHr+wzzTJNvpxpbPJdAOuPodQY+2lT9eNYpmapC1VMMmiTxWJZTcv4YKhNoqIKTgzezU/e1EHgHoNCDtlgJB+aDFqFq+NbTkIsRXuIIV4HwgoJueK/2zozEEmVnE4w582VvtMo1wLOCmJBm4K6W11s8DDm9DUuA0Ae29YTa8uAycVqJUEOCraib3Q8+phDA1p8jPNFIxAvw==\",\"La/6rDAiBPxoDEfBNclZ8GA78uCuiTJLPIo6OaAyca23t7ZDcNPKjeef55/hQm23qLWBINVCNtFoMAz0fpn3YG4Bsex10s36bgTujTgU0MNsF9R+Vs9lOT7P3wmmTeyL9r4cGwD7A6KNLTydNVNzC+UV+AZvnS1zo72HtZKMi9RfacISxYSEH+brdn8qSgUykgRC6cesHtnGdig3WAM9b3M2lPST46Hy0M3Sq5t4V+r+XSQR6Tgf5iIq7crA3iyZAlD1xnUcMDkuNtSMHLGeuUB4iFPMVjqfOJnQG51nxBqH8COmo0+BfbBaNDO8olMPewIQ68ECoAAgtYwVIqHCVAL8Y5rHupXu92KeOEaIgqaRLCYzBKZSHMNyIo3hDM4xNCuoJMkoKo3jL/N8mefLPP8dzIN9mefLPP8XMw/6P6AP82AYSlIkSf3Y2kIghKQIgqAInCIwEvmLzgP/deeBfzfngb/O83Wer/P8us4DIWiS0Sj24ys9jlM/6ncpjCBROEFwCCcTjMKTooiJf9h54P/ceeY4087t8WaeYVw95CsgUEpoLR+fhTcsVgT0wF0KOMUbkyYczDKu9DMys1Iq4Ro0CMsHOJYazrB3XjjF0+JZ5QmVf1rXznMdT9VTl7WoQUMkiye63UwPys/Jq4yyUZI6O16vooIzW6mYx7AA5EHrWg90jFoDNWURKUJu2LMCdfIZYYhzuYdHtNj6LzgPAkG/jPM80kX7G84jvFiGaV4M+RxsQT3KE4wfkaOr5Uh3CWgKrCfNk+Npx9xcwhSz1rGbn/v0qApFs0d5nl4ukTzPBEo0v1f1qaam9XWiDeR6KQEHo0ThryC4YoQPSebmwCzhfpxPVRLNx853LhfBs1Z90mPcnugcAQCHYAaRNpiYuXR1xmkj72IzdFGXMjKHKOpnHMQrwDyM+4s43k0y3wWnArh02BMnppOMpKDcJuQlZIrftW2L71meoyAwGJn0+Ok08gHy8aVpAt4WJ5mp8nUh5DlTFSHOldMgbnaaa2aq8VzGI2+3B+9aSvkooGctfvKDuMhL1RGrBxLqoQvY1pNpXEIssujoUbAoGwMxD8XjESd1e545sFHAdULLH8GnPVx1HX59GmeWCP3Q9qbOu6a15Pl6lMzjxYTeyOtvUBzfSgDk6+GfaG0FDxjCu4D81NXL1X6carSTncmjeHsjSV28Vos5dAqdG2h68or9BssghMCmZcRb6xWddtN6UT/jVHJMCj5cx6QmTnQ0L6y9UuxmNE04X2M5lAyBqW1/ZeTGqDFuUdyZxCiSRdBxLj/O7z0beoDIuwFnh6ZjFGEevXGCe3GusajREePHml9jvVfV7O1EFoLWKCcvUHvOHyeKOu9yn1JQswX+Rg/GfG2wkMbkql51Nc2iWDit7azFi+vJKXmss5/mvg2GKKR86uIBu6MsCsaMEXb6BmBxoNQrLYkV+U2IVObw2h/OM6J09Xs5D5rC8Y+NXSKhUgihKJLOixQpkIRKUBTOUArGYRiB4a/zfJ3n6zxf5/k6z9d5fn/ngT/OQ2M4RsH0Z5wHInEawgiIwmkKJ2gS/WvOg/x150F+N+dBvs7zdZ6v8/y6zpPgKEEmOJYQZBFDMU2SRZLTOQbnFI0QKU3CcV5kWPwPOw/ynzsPzZlk+ybkK97f7kOXyljTGaZjwU7uxvlCyk1dkjp9Pco3G/GkV21bY2LqayGg9Lzk/awUVG/YtBn4J9Ydx+CKk/Wn3ex8t8onZBagV6ZNR+S0G+j43FI4PCHAePCP4X60QrRQxcwoFaNFoSG3Ak1A16YzmigNiurQG6y/00ChPBQkw9fQiA==\",\"9Sy6/7zzoBBN/DLOYzhh9zdymk+AAUG/ZtiJOFTKpPX80Roo5BC47YN5Qxt1nCWGm4NZK2tjx7KShnzmcZaYf1WTvV9QYa0mJEc2vT5Uwgoxzg8e4ENbAdyLnlap+iN1FLyDByXAIkiBaJ+1oTSrqAUVRKV2BAMJCmtK8HcyEmhKS4tHQ0+eZnjg/J/s3ceO42qaLupbqdGeEFX0bo8OPSnRe2pwGvTei05XvxHKVWhz1q7qXCerO7NaswARv0KiAgjoifd7P2U3JAxxT0ILitgImeqcrex9Pr/SJ9MytNz7jBKgjQeTRX6wmt5kfV0diUZ7tkOE8KxLPWXPu6liBMcpWQ+/a3tB4RgerVMByIQb6kxY98sYrG5Qmz55ParHJeDepCWFkrTd2gWSXydVXN2arDvdd55GYtUU8ELqRNIZFwzvNC0Xd4eYgDduVp22FHAF9p1gUuA2da2Ih85sIAeZQd672VnBellRjieRLcGgwkxqic0pAcQQHmgX2ZPZhaXSBBvnGao8FwKUUKYQEOfS+d4NP9oduZzjqLt5GnjFw6uDs6EOjYrSyKIF031t2a0O9aHFmoXj+4IiqY4VVZMM36vK43v1KFKFlR8id95fwtXUz3rgGjO8FggJ91dhlVnJFEw3HJtVKOk0EmYkATlHvfNEVHzF56TKtAQFnUoEV7+DjYYBLX8PxDaAYDhass6moppBLtXSukhtozrFE2rTv867t2yvwFujVTfbmVVYntkn6dhJg4kSvoHecF+gBX5AchgiBtKzRsnqFP1oEM8x3rvpy6zrZrHfFGl4nEFmyk8fr4pnLR8brfnqehzfnKcnBP3Xch46yQmcQBICJbACSQsChvE0LmIsQ2mIwFIEiTMSgz672T/O83GefxLnwT/O83Ge/9HOg3w5D4YhJI5TKEF+XYQIFKUhCsUxCoIQhPg+50G/33nQX8150I/zfJzn4zw/r/MQCJ3QCYqRGBqneQxlX2NcCZITKIqSEB0XOEmQKAT9YOdBvyPPs27ULtaQfcgPJlCrR+g7BarEqAEqXE6VZwq8YrscK2nRZKuwLz9lrjXaaviBnXRFXzQ/SXtSzmCbPfDgJj/gRPj7zqOupDxLFgWDiYFclRMtt0poOtf0WeiQuj3xkJrJlqRGjy/ncRMt1ArURfzyZvIqMIWXaZ8vpF+A5caTycqskS50hj39eOfBSAL7eZznmLg/sInd7A4QzFyQowCG4yNTPCuV8x73VD0WRQJGBRZ8ykNpG1fCfk3HF3Bw1ttZYnNk8KJLtEXbTQZSMcnY7W2ltTUmSMWp2RFdYMHimNI4LeqrpUWU5hPQTfu9T4kcpxl/BL5pIvXWDQk+yiPMmePzAW0FglftgSxk325oc3ewy3leE9eMRktnfP4ew5mgia8N2U82wrfIZxcdUIYmC4wQJOhrm2ya/u5xyip0x5g8GE2SngrCVy9jnd8txO6WlAkWDwBWbecMrXt+O40V9FhY2KnFCUnnhd/I3gjKwjk8TEqxs65CKtk2772PKvLHKD8RMarw7cBYTbp3QX3SQo/6d30SI527zOjg8RDhbXhJDC9roSG6XX5Rvs9LpWRdl0N1iqqfJw9zKQ8+5aXePCxzwTycthcegbR02xxawrp8bLbnZQ6F/hLeeaIxbvU9lhYvJ6J7XURX71jg0WZtTCCUU68KgRWhqykrMN7zW72CZ5KYndeTxvk+716VUFp4Y2gDHWOPkBXM5/h64ocU98nCkeouHI0xXTlQ3ItAgeg8LHQnP6ln+naiXcWaI98RWxdJfKf95/PVwIeF5MlUhehrkitIErWwedyRpw==\",\"q94mivTNW9uTSHy9ncwV7txUTMc+JrcWmM1puvyKOTVGT4wD6BuSME6M8hN0pp+WXz3cFZCkHovQTdPec3sEQPaIqBvjyz2dFt/9znviLrsc3uZwhZySzDfnsVM1/rWch0TilELyokCROCELBCmgLE0zhITw7GvIFykgEqNQ7OM8H+f5OM8/h/MQH+f5OM//aOdB386D4zBG0RREfM1twSgG0QgGfzUzUxT2Xdu2sO/v58F+tX4e7NPP83GeH+o8+dp/nOfHzm1BJE3FMZnSZArBWJEnGJpRVJzkME7AKInkFJJl8A91Hux3+3kw6HedR1lZhGZuqrVshxgn/aQ3FD/t6gvMtos2jyGVn89SrkfOMiqUVOznAHjgoS+41F1dsW8pP8xBCkaJid3RfQn4lvvbe9ffzjMphEeCd2lsscsV+rVNWtINET+ctgeDhhjjYFup5ymEfuV5bri3YXfP8iH2XFqhZfnB9MHXMXgi4awJxgsT2OewrIzOj3YeFCIR/Ofp5zGaPPgDeR56sEBAo0lOk/fAxgDIBh2hxey8eopqiz7rQwm4MkwA9qmprxu7qDDbvp0jJ8nWZoGAvKJy5Lu0HMwl92xSYzgpylHgKdBB36DgzZSz0MINKpF6Oty8KqfeNcr+RLQOT9wT0u75R7WpwlXSTvFUZIl4tAy3uC23pNdwDrOqsMS6riS90fxlacvXeXq7tNE47bsq9zxQifHReXa59s9XHngZV5esjk0XJ/RmjxnQWtKT8aAUnZGW8p3niVdyYrlTICVuPmXn2ZdilDdIdOesPRTqxCXguBqy4flcHLs9+DySA2mX9eB1zu9tTxRdNUB03yjcx2Aun/ecP6qCzDgH2QASMmW3lJogquPWqGL9Bko5GMpwLBvj28kuBVctCyaiDvRn39OCeQkYCb9LfnoBuwIltFg8rdtTx6ZcCDqqqM3rJZnO7LrvGmajR/tLh5H7hg+xwAExrveFMdqR+NIZqIzOl6zOJql4peeSc29UB1doqZrhAYV8c6oOFSpCqXiLmnENSLQzvloJb3ryqXR8w8trj1XUbbRY6lyN5Wp9o34ByQGf77319yZH+9NpDfKgwXR9kXVYVGAM7LXFYZjCCZFJaWayq5GRuWbu32Yw1yndqJ78t21h/X29Bmt94QzPqycc65Qs55dZs0aaNcrT1NXuuU4JB93SXokMqQM2AMd4TkDe77/UlMbojQuiQtMpwrf0Gfcv4UgYSUYsMGDx3fvmPDDpcd/nPP/mj91/z7YtIkMTOieLHEsTlMQQLM9ogqCpL9/JY4gqMDyl8vwHO890/um5pn/6X//rTz+efI74mVb/5tKfvl34BS3o/eL+dzemXx9b/vX1vC//+dvlv35TUg/xF8r8x+/67frP7kpZPi15Gj/zr/fSrer1T799KvpT/YU1RZ4+v359Pvz0A/npX23oHw9Sf4udyH9idlr+urv+/0V+e4j/m0b9P+9H+Xdkh/zrM/l9pvrr34IlX/Pnn/Nh/01A6H/zSj+I9e/v0r9/s94vhvgfJ13Yt4YijMRpEkJQGvkX6C8EjZHU1woykqQR8vuYC/5+5vrF6omwTz3Rh7k+zPVTL5XHKSilszRPETij6DSPaYLOoDjGM5gkYASmcBwqUOgHM9fv1BNhv79rLGb1y5WzdOhvlLQC3ICXi3a+LLKFBGGF/AIGujQVc3ueXLZMpI4BHCiGO3HqXjOK5VVs69yIYjkIeJgl8q0r1H9v1xi/53aGYFIDcLeLxcSd7LbwpZZ33ntQJgk85+y5ek0m9yxTM/k5Cy2uNkXoytzavJ4I7pmKFkAgCQ==\",\"FNiNw8aSVqYYs+l/wK4xFKJJ6ucxrpaH/oBxGSQDgjZCF66YMVnDoFmUdJoVbBAAH36gsgtfp6CUZmPRTW6lsjK4vLtxSK/fjhmpi96tAAcvwmlCFYIq+Xm9ZNFxLyqzYn/cIPA4CkOZ112n8yFlJRp7Z1l4ODEz6yK3V364hHGiks7NUVyJSixYqsrRYjmkGfxYA5qDRwhSFHdt9gWkovxtRHc+1V9F1BCoz6I2APtsNoYbHd5v8YDMF26b/r0fbnTKkKbx8pFewG7sliQPmnz/fEG5zRZt9gFvlks6vxzYB1GFKzWlHWKHdffU8Y2yD6jUyaqkA0hXTOHejvYefnfzzAKd9UekFLdMoCvquU2PhT44jo7sthXSuxvnIxZOiySQDzQpejgbmofFgcFgvmf2slrU6ZZFl3PZh9KzSNdoE3TMGtdvb2LrDAVUOrJg0ErVPFoJG9u7YbNGRxzMe2avEcKaq5B0aMum44HuAk+SjSGatjsFKfZQPV21dfLenM+S9ESTOQy+eRnycWr213nmlSK17qur6TpptUx75LaP2XflRk1PLr+o2xgXy9wVAgDuHFts5R24HRbbLdK76scs4QwHnn52xit8r8iNzIbXdgtMqjj9rEKYVkcs02OFdYsUzmeDWoWdWEtYOXl3S/VKFJv3rj87vPNuw95eZ7Y/U7ExYe1EubFDE4ceRX73+gLdJvhedaAmRen2oN9ZphW8d7KmRv5aAd3qqKsfsn2W9dZI3PhRm15M+s24nrqu/lrGlSI4AqF5RmBQjhVxHMMwgsNQgdEUjlF4gSEIgeJJ9jGuj3F9jOtjXB/j+hjXx7h+feOCvxkXgUA0TcH4VzsTBhEQglMIRBM0hH3f1B7+/Wku/FdLc+GfNNeHuT7M9VNvW8shOKdSEsrShCJjPI8RMiVwKidSlChiGsW//puf0D+UufDfS3P9PnNtkTMIlrKE+ulI8lN8LrryoMh+ZiEcAPp68iTndUTTgPBcevKJlp992aNDQFMAPLtLT3I2hC2hTJGkg9Ze4EdLfvwd5pKv07YnWHuAcc9hTkV60G1VgqyrHUdwb0oCKPPIHkEiPZmaTRTWV+9j0RrUidWC4S3uavFLfSgEgTu+hig3OEdjrX39I5gLRijy52EuSnz8AeaKaQsEfevOAALBNHwV4qRgs+B2rnrPA+Qlovd7jFVm7HtQY5moaMX3d7WQZbSGII9xRTG0tFqvXu7mxOE6svGhe7ubYayPN/I2V6BXmWEbeqZHwBUcPG7DtyiX0hv47Sj1ZxX2KRSFbYiAIbs58kp12pYwgRCYU0jLroTUlEiPUblOBLAYT+99D9Zzl7nJvpep6oRa5TLtSjqZWCb8iwzywIG0RzEO9KyOyzOPdowMV4ngbU69pncUKGUiF+U6JhTkzLSPCxO72fNfmmraQgJa/YlzzIzHrag/PMOyeWkbGNqe07aP3yN3OwTQzLxmWtxHq5OwXGtQtvhgg4UCXY2763kALJRsR9kLJNyd41HKjTrioPsEfVdD4REi81faISVNdwklGwizzydsjxRwcXtuis0+lhuyxvJGEHWIKc1ZaitXReS7muim9YgoiAAcI4PGU31SPxkmRLxUSiNUMHbSeDmkMlERNpEIwwqqiMANCDmIoLyZjCFz3Ap8ZHIqZW17Keh4qloTuztHS45WZ6/458j4UarUB64yK/TCKwe1jjLb+HcUDX2WTyNqbWEzN32DzCaTMsive1R/3Glb5Wnujs5L6fk3QIjCR2jYejr6Qdue9Nd5zYgDG0d6VUFkADZBikdIvA6iRBtjm5/CyNBmv9k1gHoeTg==\",\"wxTmjYjNOOsfG/iOgjm7tAcK9pw54mBPuWwmhc0WOUWykDjEdvN87BtzcS4q/FrMRaU4HZNYkRYFTcY0kqcQgRRJQqAZkWcJmeQJheVp/GGuD3N9mOvDXD+cub5WOH2Y68NcH+b6L2Qu/LcoF0VAOIRROP6OchEQTFI0hmE4BSPY9ykX/Oc/4Fxfh34x6fr2lD/W9bGuj3X9pNaFJhlKYhSN5DlFxzCEF2kBpygJ00VSFAVMxSlKZ3Hyg60L/vN/WrvQDFR4X3smGxFGMNTdBVCLdv/xSnvKDzhpp8hGcDuKWG55PkjGnhpklIVr3FFdq5x3S2KnVqkXYWISBLxcZ70Q6++Fulio3g8Q5pObb+ZW4t1t6xwwzmq49oJ8cDmOfbk7zVzSPlMzPSD4UAhW033lt3AimYcxAGQNFKYJvDp8BOsXqCQI1gb/EO3CyZ+niNxUI/0PFFS19QECWk4brZAadzfE2QdaYw5WXKvaKQEGx3BTuR5GdrD3OinWfQj2W7vKPgIrWxj5FGVfGXWgMokQc9MP47bFWyzqZGk287RSMzatj/sEQYMNz/32mLy3No3JAN+vU8c3YNmkYzFOz+QiPRMdr7gNKR4Y6O5ZtK+iM8ewcDZIDZALVYWn9FuLYM8t+YCW80eWUDejIByDTeLqJXqnCsVTeADENY/R+uL8QUJhM4pRaIPytpvp9z2cexlqpC6wJ67OXhmnLmDdcgMGQ/SUrqsI9ygZTZIQPOP1sSY0s67cZB2U1ljvUBHigzzWnJDD6iycTU9KbH3wzGApxu4QlMdhRqZajyH8ZXo2SC+UFwGivDzKGGPeoTa2YDZ5bJehDMbkDjM4qOjlapZjwAA+2ezPBwoVnfgKpfK4gQ9dS0DY7Tg+1Z9f5+tVD+iFFBNM4znMiV4BmLDEE6otfSHCc3Kji1/lUpZk46AUKZJMGh9KtAwt+D3HZ3cihiiKeCu94DHJcpTe7viOUjkkhnmj24uTbczRxS0/JmhC7xZnoJuB6facvbWvaSil3BeOW5PZRhFSO0hDlgzdiyvvxt5tAnC0C1dWkPFnKJFjdQ9pN6nYtSvffVF1pojL2Bi+XHknYoy0f9de3laf24UBR5ALM9VYWr+ikL74iykdpIm3bZlQVPXt91cq2OOAS3ltR5NMtwrLNYaZXnF6N2Uwz9BE+aZdKh//YoOLSZ4XMU4jMAohVBLnNIYQKZVSUI7DBU3ROQLFRUolH+367yqx+lfs6v+0bMM3xfpRd+5DaR9K+6emNOTP0N/AtG+fYMS6+ytK2QLDa8Jf+t8+E3+k7SNtH2n70dIG//mbtdEICmM0BmH/Av0FJWEEgmgMh2iIhlD0O63tD0jbL+dsH2X7KNtH2X5eZcsLBMoomsYJIiGLlMqor5wshiVIRlEEVGR5ElMZDP1oZfv/GhtC/r6y6Y8C2wYNhzBxqWliuB2oVSN0PVWET0QxsDPwhtoU8IDatGhx+KgtFNYjlncPkvUrDh6tizpevYYclYq12D4bRfZ3M2VVou50yet8w8mvhiVmp3gE592b8mOYKZUcNjGSKK2rHKZm+EXQnDbp1UorLH68y9etMe9NKmoPORGZmhKKtKRSlVqsH69sFELixM8zO2na3B+YnZwx6wDB2HZ5OlUh/watxDkaJU9egWSaqPj0s0aKpFfNmh0qBTQkWieMfZ33oNHzNJ7fZh2RNE0prFyEFqUYpPUg2/2yDxJ4YYIVENuRO2ijtEfnMjx1g6B3xueV3GndOEyKCFOhhw3lriFPmBzx01e20AceqZwmpAYQjxGC/SiEG3GhnoEdjLe3moxZBiCaXw==\",\"pmLwcrN5w+Wye0pMICvipioZ4/FdwlOvO96pBkBTGQRQE1JHvQmi734tzYxeKROdEN3M5+Hit2B2006TSUHKczMqySRalkMUFl70WD++SlxjRmuZqtF896hnHXLUTCE74fgIC+lOZ4mykOAeU7pc2sLl6naD3bgdvSatfUFPmF8q2K4leKCn9+wpRQTzxXi9+5jVAUwfa4BmSY07a/vUiBXDeaod7HvqnCvtAspAigjhP20rVeJ3j33PPm5Pj72Aqa+GDpQrUq7ui2KX8l4PBLmDor8XlPBccVgVGNEiZv0ZK57Y+AL7dR4HoCXBeSvQxleYSiHEjeqJDMCMlS3YThnWzd2gI0IaK5xgdiR2KkMU9720j+9+OHnFr3sCJjw5CS4evII+VAWkYeyXXgHVwlZar5cdNN6EbZHkk2KPcxHQe3dbauDdD8ZWxFXMqkhXgnhDL9GmHc7PkwlhMUZ9xRdaawst6EeB1xN+Zd3rPtqctq3qU/o6nz/SO5Jz4tUcFHYTqSRDWvk8XYQUh9TPXXlvvzHbsfHPX4vZICTDM4SMqQyliSRLMyLJUyQuELxAMjxO0AyjMij99IN9mO2XZbaPn/2en8H/zH72IbIPkX2I7B9BZN+ADCPQr2Zp9OsiDEMEDkM4BuHk9/kY8f0Tl8SvNnFJfCYuPz728bGf2ccoKC6gHKGyrwhaXuAFBlNQmuY5TUJpQscE9fX1uzPxx/kY8XsTl/83H8t8L+9c2XmunBGwNYfmKB9pW/MoEoino4lvw2QQJjlO7wVvB5ta1mG0PO6GHyJEV8RbEp1SRSuOiBHCWNZwLWLB3/Qx76s/P7qcMawzRkcXKC2aLUBB8FRZXNekDKUxBfBCQB6DlVotpWSwxhKSBzPORS6kPdCoIt4XaiRQ7vEi4i6q9yLxMTUTvR/vYyiMQj9Pf76tvZg/4GNS+BVDU+QhrrujVYLuJCOdmor+DqzQgdO+f9ZBfO0iPRn5qWrdckffvsGUvtK/7oRUOqaQEx6mFzge0+kcSwFm64fNKtECUiwBJCyX20pexVFe1yi3H+89iYfpjCYmGkqK+InMJrjvXqMoJlU3X2mnkgoSCbm4iXaRhDM5kLlRYw6Kr7XNfouhcTuUCDDADwk2gzdaoKj+KOdXzLkJwvaH3I2MzDLjo18isC4BcKAJOOQWczHq99DgiaWsPx2Ja4rzmD2gVMiiKzwbNrygg+nKCX2J2qISdx46WuLIVtwHEkC/jE159/cf2tpY1wm2/At8AmesEDf5WSl8ZEitizOFkJmezdW03/XR+ISgjJJLuQSo49vQIDEd4wt0dRus9sPD051QGatXI8tkyry/0/NUnRuvXfR40wy8u4Bpi/EaKMA2f7x9bBBcG++FKFoy86w6UC4UVTiRkndfQINx93R8rgKSU81CebXu0x2fBTT7CvjhvWfywcgLTXbXhSYc2C3ioF9gQPSTLHrz0PBub7zAOYPGJHHxErXga1/5ncdlCL69u8HWFGWZcqWDe3jKOtsxN4DPnvcCmwGrYUv+OaRXsN9w3nakQKSQGRzhhzF0Nd6Z7264IZD20302NpiTC8rPeyIxIDXhMZLv6UPH1H2u6pTNyA675Pk8bsHimANN3eX3+y9OZTmO9NzOAiXSWjRoW1U+B5iRIY4InJx5WN98jHwx/i82dIkiNAHRZEYhSZYTZIymaUpkBIriFEkgJIETdIGgxK/gY399xA+V/f+msv9wK/++mv3+gQ+gfQDtvwfQvn7Mh88+fPbhs/9CPiO+zXLiGI4iGIXhX7X88FfCnURInKZQCMLI7wQ0+PsB7RcLmBGfgA==\",\"2QfQPoD2MwNaSlMUShJFmlEIgRMZiSBImkF0AZMohUIFilB5AWXZDwa07wiYScIKMLIE95IsycDz2q+ZD+4wXpCa0hIpaI3cMpsoeE9ow4db5aw445YuPfCcJQtzOSJ0pBEase4ixxO0rseTR3/ryP9bCyiNKHCiR7dBG4lEN7XMCgEec0ZcYxaa1ypxnzvOA4mSQIdSMYq3hN0AFfdLKvWnVd8igDNy5t7q0doegWsoNUBzBHhji38AoNE/0Rzn1x6E7we0RWYrhukde7aVvEurdK+OAAqXoc29GGfNSixkhvKBmCqUYOMuHxtm6B2QInaLovWj0ClQCPJiuPVwpFvU2jInr/nLJlA6YDsMWOj5BKzxkO+uOSuEikgB+F4AiUri0ePTXD5BrCsy0Cbr3aQGvovKvCzMGUFjnq40JiRSDXNd3FCjS28oQUbeAaNxJMoUqonLcDlFqSpZZW6DCFq7s+t4vWqeOxdpNoiYJD1uLwEU3RZeH2EPyv27XB6Iq4BE7VG5+RhlofumVwr0LALRw251jN9mNde1Wubic9foGFoe0Yhnc3anAe4NSM/A6C/kKegbLFcQKOg9/hQKteUMfYsPJ34kYomTFt6Q3exsPkea6dY/L1UHzG8Bu2UmiIQFEy2kX5jcDIdnv8ZBGGMWFa2xwESZp0pWpNnW3dcRLp/V03bjDSXZd2tZHa2OsFEZLtfrwxHRtSAkTzVVwbn0fX6EZ1jbWjtbSfbUZ8ya2B5j7Qy/W0L4nqO1eaKYmTM9JwCVygbulRck8/cn1D1SjmPKlJYk8tA3eiUEcDp8MZYA/2Hbz/16l/u7u3iM6CgxnIPlpgeqbkyDNJKc+kSZlfxSuopY6pPboJHphym5cm+lYlp3N+4d0Cs6UQ9YFIyvzBpqZjeC2/2GtuJoQs5myGMWpQSVB1UkjChumkWya+JEa0AmDO854lTKGQwUjf5upJVn+f3caaLgKUF1u7vKGbwc4RugPSwc+sUADYMyIoNROI9xCIMgFCYwEsFRmqLTFEtiEiYQCs/RD6B9AO0DaB9A+3UA7VOG9gG0D6D9FwMa/BugYQhG4dgXoH31oEE08vW/OAihafj7/Az58x+IoCG/WhnaX5/yR9E+ivZRtJ9U0eAEpWEyzag0L8i8wGAUiqG8IPCiSDGCIugCTXP63fb4IxUN+fPvBtGI33W0+j7rZHHni5EqekQT0mjqCyRxLuBAJweE1xC+9qKUZbEWa41n0yhft5Ar2ntMtHhrXy57PBdM1ORHR4AioGC+QVp/z9G4xh4D/w4at4EziDhIFH57EIVT0ovgmpJiVC/6aMBLw1jmy9HCsgHzcZP6dr4ndOj6VF8m6tUYlWayVhFAUhx5LD+s7A93NIzAUPTncbR8bP9A+z/uMCBwVzoP7Y0OzJldcIwoy/kYXhnPoyPC3SADqK1HaLR+DBD8iU/vny9Z+MzoZS4JlK8K+N2ca0XdE9lm+scy+PGBMuwrwBvJ3r19RDLgsTXmfF8owXifPwmHBjLpnmpG2odP+UhvMokVHizNVaz1LFLsxvWUyyLz6rYR8JgLt04lIVyJ3w6FG2rXVePMBWWYSm1YmK8zy0zKqiiT6oCtLdHTyQb2prR4eRvDwfC2l+QNleC+HYlZ202Pc1stH7cdFB7aqdm0KzULrTzvUxxuB/GSRansiSni7jIWVqsbwrQ/3cK3A97ErAzkQn60Bb7vcC3NMEc8ghnw4OwGojWaRiSBI3KfOmSCIE5CRT3t3Gp24KL3ebxxmTgrTfW2i7i5rkIYSMxkgSrG0De2tlv+DIUcbf3bIXLGrncQ2DAzsA==\",\"3r33oOxRdK+GwVLJxRByC4+whKkFfHHQifKtN9BMQqxyizQdYjRAcR8xIBfdDqRQMH4ParZGXLaY09qkHAdUSJ4KEM1QPlhoatmqSzoYDfTwJkNJWSGajVmubftd4rUH/na0owzE5RQiXtwkn3hiYm8pF9YHI8weRRU9+SsT20N78REeSHFBZdkVLbuSzUD27pMDmsFQ15tb0Ul5J+1n71z82Paaeq9pFOUo0mf73nu26nrTgwcvFtFwQNuhgujjvWS14G+qUzFaC9xQuU1Kz5vEHY+zWieBu1uL+3R8czSNT4xfbFCToDOSRLAsQ2Mqxqk4L2I0xcmv6CtRIEiM0jiKxeTH0T6O9nG0j6P9VI6Wjv0UL/mff/scvX6Tr2/P/G8a26cl7UNwH4L7uQgO+daShuMIgUIkhX+1pJEIiaAUguEoBiEw/N0IB/8RhPvlgmzfnvIH4T4I90G4n7UrjSogrMBpKMPgLCUxAo6RjIxpKMnhL39DULiAcTL+4QgH/+cRrpzi9gRPH0U7TMjCA4KBvJAb/J4qcQSw9/LOyIUgvNY1E3UOshrOsaub6BdbXaNUhISyrEqCUDgOEoTulR0hZ9yYv9OWJgVAV5+QN7bpIzlh1ww0gZSvtpQLQSWVXlJ04FiocfdSpma91iP3p31Hh7lbyTbCcSeBDZnWKaFWtGexQb5tGFuO3cp/QFsaRmAU8vMgXMHcvx/hxmI9GaY36j0mfSjmGTfapKTaj0DkMuc1pKhQrYvmUiToLczBDOQiys3XeXNIVdh3kf2Zzq9bZ173HgSGPbiNaWifoBMVuzDKBMTeIUoOPNACg9OxyMObXu8VnM894lafv+Obeul+GN6d1zpxGLsXTSIwGgyBLq2OE490zetZ0N2LGyOSd0BNvML3NGTTE8oad2mgT74zoMljZng1lATsFUoE5mqqN0fiKM0kyOtIbHf8Nc4nzonB+g6jMeLdPxixvPHADb+KB/SkuyUrHHpvmKqzGYYB6B7dbbgRH2mk06dRTQx+XQFhvr7OT3kXYmOCsSY1qL7FrSyILIE1V005U4xZD95qMhn/3B9AufJ8wCGZW2Hk+rgD+3uF58CfNgi8HgUv5tVOgHuBWgss4B7RvkbXOw8qKG1gsHsgtFEDpV4LYnhkxWvnO8y3DdVyKXu0p3B4c4gSEWDUZ7N4VW9Dh08giROmhugQAoprPh/HOp5EKjCZrB/v8+RLGCa1tP1WWmxuFSLFu55IO0ovz+/qqLZZxLILhJZvNhqtTSziKaz3rcEK1bstLceZIBBgEWW4F8fcDc7Dy8p2uzEkltcO6tmIZ0a9ZLgArP19h3xfXDck9QGGea/gLOwUY+LMVsQlke/i1Ot0W9BN0cHMOT2P0Z+8PKERp1bwYo8DSvNI6RFbokOv7zDlaoIygki+Gao9SD2gG7uzpvgUPMBGgrJNiPS3pQQDtpm/FsIhGUYQFIlhMJLGVEZiWVbAZAxjMIZlGEYTcQznFPoJs30Q7oNwH4T7INwH4T4I90G4fwjCwb8hHEnBFAmT/wL9BcMhEoNoGocoiKKI75okJb+/io381arYyE8V24ffPvz2M/MbhuYFlJMkihAUCecQhRUUEmMUSX8NDcEEDUMwmSfFD+U38i/fkYAzsp3zmwyqMxh7DUQz6+igraHYdx6nYGma7uUtt/DIRcZtZp198rymnlkcZuoNhXaqsO3raQCKc+FLRZWdiCBKbP2dKjYReLSN3dK482x2/xncqXQK4i6MeqBm1Xkyb4vd3rU9RCymFhgkzzi8uh956xRuQr4GT6CMUe1ZQoWnxq3m+kWzjrubdQ==\",\"++PxjUahryHcnwTfXGm3/wC+pbcDBAzM6Hj8WPkO69I4sCiyGrJNABN6wgYApgL3eXg1/KCuVbzI17v5fVQv9+UIVCKQZ7ltpmxiT/ppAqGYiV0QLbcX2FI2HTr1BgC7d6bqILwQoolUOH/fhREj6WmJqONBg7CtwrzVc5us6AiWYpHYN9iKx/OWptGN4BdeneYH5hdU5WLy+y7N90RTAYOAD7Nh2FaeHm1px23Z+GB/4AGbsH1LMSH1GBmn7F6xnZS8ZHMxd1hvPJPC9TDq1ylPOvt8mstNUZhcH70hiuw1MWJD5uLoljPcmmv5ToayjzwZTeJK+P5+/SJFtvJiFIVG9SUWoJF93JdQD51tILWk7vTXOOfQ3PWBrU7EMlBkA/Es482L865CqwxofPWyl2KaKSnWuWI+oE6HGuJHTUinOLlxuPB7JUAtJN0RmVYkAK6dUOGeb7xqC0s9tGi3Xxr1uL/QWOpCdCfTB4+6pKXjrpm0OuED23ODjLk2yorKRgKOG7t/V5nFYspm7curG0zIBrfezK7Sb55IBtuNrFdolnXKBhrzPoPpAyAU57HdbnG21s3jncAbSo+kErvFGhEOtRtlMI4XrHtJ4i+89tgp8WE/0K/zSeJo7bZRsNLaaa7UJkrvjaBCn1Wv4LqUpBRiFmMHLM/TeXlQMc/BDMDHgqEUm1aH2dOpyglE74ZZZnXZTjr8dV7Vc99X9s0yaX3yp/GU+1QwwiSbkkCLE+ZMtG/45stQ+YttBCVRBIGRokjzDEYwhCLQIkEIJIOIjITppKCwBCpi5INvH3z74NsH3/4Z8A3/TJl+dO0/rWv/BwAA//8=\",\"7N1pj9vomiboH0RMct8GaKC5iPu+ivwwBe7iLpLi+usHISe6uk9nnTz2OKvTNfpkIOxXIiUhInD5uZ/7o2s/RdfI39e00ThCIjAE0f8G/QZBOIUhGEnSFEFQNEGR36dr8Pfr2i823kZ+9rR9dO2ja39nXUPxFMMQOIeIDCFzJKOTlCxpGMLxhKIIGCkJgsJTmP7JuvYdo21IrSxr5xpkivEODtU64SrmEbiLwNxflkH66YUHrSukNIYHE20hoLOxvmqpe9gBGjBuzlMohtfUSAb6lBwRYUty+tPRNhIIctF8ESLUOvoUYuHcTPXyZPlc1qr2XILXQrJAcqg1UzMCpYt304nXcbSenDC5SUYNUURXfQmLOLwXQMzbe72j7V8x2kajNP33GW3zDB//AV1TvopAAzOtl0iOFPsw18tcp8Fn4cS5R7RwiisgHOgrRjPwvrKPUBepd76vAa9RF8ZMy6n9uDvnyy9f9HlSoRgKdrfeb8jT3Z21wfyatVkEllA4a1etuWnh+y4ven1KCvEEFUnn09UQpbxdX7SOog/ntbC+JYXnQJP0A13yLByKs4hzIBvXcPTfo2Hi83G59TD0du9GKjVgE8TGSZgdk7aLfQeQGJu9jufeScXdgYHbQ1PLZ2RPkHd/61TVClottjelTB6920mkC2dFdezr/MhShyiuRgdCWHvEefQapkJBQo/SzhTwA1F6j2b554tzpuOAjFwJJH26sWe3MI8lyBLD6rEst4PLnTg76U1LDSWCkccJDtNWEN7vIVEq16IFCux6dTGc7qorWtJsLnqH1COEbtXyKC1akR1XikhzrWf3RR7i4zXfh+mdr8VsjmaqsqAbQt7O/QHAvfJczaKtdAk9S9Om3dLNLzPpPV8v4Aala0RnWwFi3q+fx2VGBWmA96DnTgPruHMvUrrF2WNG96tWBasQUOhugCNAi3Cw1stCw3DVHK8ofBepzpKnFWehy5WFmTVWPs5wl4BU1gC7edlj/3T7rlTzgBHXZvVSJg3hvj6LO3K8dbVRzpcB+QJOjLr61Bc12G6Ce/YNAhh9GZ7w7dWvq7SOwuYVoTOBTcEBZ+RDF/7WyWPcnAdOSJqrPog6Img8R6XRu0IIvY8dsZuF/03X7N4efi1dI5IspbISS3AaxUgISjMSSQiygGAcTnOCzLEEzSn4U3Tw0bWPrn107b+IriEfXfvo2kfX/nN17dvkGk3SJPQ1sfYVH6UpDMZpmMZpmqZh7Htsjfr+yTXqV5tcoz6Tax9b+9ja39nWEDzD8wwiqCKnEayAkITKaRwroQQroCIl4YQiqBJLf6qtUX88uUb9oa0FgD2GwZVPEtCXgDgifcO0inqo0BEXxhTgOa8cBQuw0OvF3bzgfrI3mD8ioBGnqb/wLbyL212o6dDirgZINMc1/7xElHscNLK0FIeuEMhS0DnF9+hJU1W6tWY3RVVe9ifZ79edrORKCrjuxlWcTC5673WvRFKBKM4zqY0uPxqh5xWviK8eAZn9dFujv4am/0a2hvjFD9iazdsgLdgCGIRBBjW9UJfj4OVjr4Uja71489ImWyJLXrSmQaAURVq/7f7i5Y7VVb1zu3lohYQ3OlBg9leUS+gtpEnMIGTeHYf7cnGGgJnVDb3568Ubbg++J6c08qBiPPFqMcBPucvoM5I4J0HqgW6eLhjrZImzVQBQUqeYCuJ5nAhxVZLWbvGOPdKeAT93Py2n8O4OXjQqcmMwVmo/Xt5rMywu159WW9+Jtlro3Z24nDdn69iItO++zlOQQfQF8gj50GSMMdzO4BIQV6tu1Zor2tJCjL9TmA==\",\"G9yDbHihJ9JAQFOyjz5k37FXQt41ku7MvnW3cUvD9ZBz9ERV+N6w+3T6qSA3WH7h0uHTMtbXvVC6a0v6xkN6xx63LsVrImt9Ca0rNcCUsUs7xHUUP3mKCEYbhEKoJqZ22qMyHmCaH/USlRwEKcY79uplJqsw0z1NBGYBn3sooLky3hzBckE24u+2Nt8DuYsnSso8ht+P7ZnyM+I79P5OUXJZEisp350IaO97srPP5rVL3f0SzgWPsX7P/QiMq51g+NjFSGFDsEFdtr1yhvfuut4ksYXZDkIEoFfsaTxR6S6swJTgXTdasDM0s91a4w4LAnvNRLy5UB0ND19Bw3ydRwtZy1gqLe447Qd31QUfl6xSlcnh+ilXUdVYVls4DmedjCjI89k8FuGRSSAufNsdqKB1ffbqevWJ/HwNtC/yjdP1lEXSr5HeVen3ybXqOU2/lq19ZUJLBCVTmMypDC8LikSgHCmLAiEhiEZymMJzDEo/tvaxtY+tfWztv4KtEZ+C0Y+tfWztP9fWqG+TawSMkQSM0ij0b9BvFIrCJIySFERBCEki32dr8Pfb2i82t0Z95tY+tvaxtb+zreE4nJZE/tUtSmM5jUIFDaMokpBkDuMpgWBZgeZkgv9kW4P/dVujttiI+QWcFKrbZBXa7dtEjC5TzFB4c7WFuKI8SjRTs+KWlHdB0gIA/VrNv9b7rKtwXlu3ZigmPQu0cRvMANDxrPoTW+Ngco2Bu4IPqkKhtEX5CWNnagkOg8zPw5RghwMcT1aPsq9U6Cta0hK2EKgaprq2wxmKFV8hVjo/Ebx5seNNY1gcNV2X+QtsjYZg+G9ja746+D/Qi8BRFQhY3qj5ADmAgjGbudribeqWMDKkmwafClew6tHogqbv0flasj1/zy3JcZv3hqwGywvr0ycmdZOZPxWSXSp8K1+1wGI6Qfu6GN8a8ahNtcYVCM8tpovfc1ejx+PZoLOa6QvscLPq8cbsd8YT7kwrBjgVuk0cwgytaUE/0punmd3EIuSwx+9egwHCA3yeeQDU6PqOt1X/6vDLGCSJARDlQePSZNXPU5JGfxTOpHiaRBXQ0xOfzbcN6hrXN40Yk2TGsko3TPCRoUFbbUN1MwPledvJoOnuxFlwLx23g1a/4G2dyx6yj7ct7dBQBROrF/bltVsAphQHE3r66OeJX7rkgddZC+xcDdLY6oo8dSSTQjYIod/ftuegc2pBlcWzedm+gqtNITDUZJ8hQN0z2k6Fn7cFZZZESOFZ4b9mlSBlHRNsbN+2lbVTyTbJdVNuzwdOUuzrVaQ5KfIYlDAHbr+chtGAWJGfUoruBZADIRVzBoEQ97dNNv4zJuXNHsdU76QrlM29VG5K/LhnlKvRuk5vs7dem4uZ6Y0D8AilnB6LOKCm8K/zvtZCRJ1iHLHdjRwCX0Ks+4Je3vq5axLgkowc6i/9kVdk1b9kxNAyIhU8LlHFd6p2zydjSpaDAxQ/Ffs6lesJmR149+NJCB5p24FP8lDKjaex+WQMlJLsp6w/66l4U5nitGBflUJHw9PTou+yg9BOhGt6+EhDVzpr2f5ma+1jV36xftGMxNCUSgkKJwqYzksEx8sUJ+mkKCAYplECgenkPdP8sbWPrX1s7WNr/wVs7ZMK/djax9b+k23tPbdGIF/7bSCY/LI1GKZoCsNJBIVoEoNR/Ptw7QfKR6lfr3yU+pSPfojtQ2x/82hoktAEhBMIgVF5kSE5lJdYieJwSuIInGUliaQwTEI/mdj+g/LRP0Y25eAK5ME0E5vnE+CRVse2PuCDqoIpyrCRY0DgXpuOO5SP+BxX8wRPKRjMQg==\",\"RF0mYE4D1Ra4DtwsWu/MFzP04+A+/gzZmMEqebV4dasDow28l1h8P+KG2eRtckbJUpQMaqv9SEXmC9mw7PYwHsDZiZvJw2do0pU9qdrKmLD1mHH1aTdK8tJmVPgLkA1HCRz/+yAbUqY/MMDWIwwIRlVdP4Pa93qX8hkNIq55a0m+aAUjXxVBYt2VUsDUe8VkxrPXG6k0VfFaVbIoi0DzW/+MDlMQlo2QKBbmGbBW5Ph6BQ0vPPvKqM452LXIt3BJuH8rn8yv2spDw2lEK1rstu9vMettWJQ5ukaS9yZ2U9pwA7Dk3VQV53vvbiZnkmuf0+9wKuo3430fjohPjiZ9TE2VnwRo+Ql70Hs0kbsPKjyWDdlIa5vMkxa/8z71kIDaBr7Oh/wGP4nojjrs5YukBTt2r0Nziz0jvCGS42FJRyLbdXmduoykxqBWZIXyza14vMOlKWcaF8wmt5fWm3xc+g2jjVa9nGVFDunlQgHCh4OSLc/0mACsw/QSy+Dz1GXWfvc+uAL88jLcnNCb2L3ENs0tIUmgY2wZp9zJzinhgeQTh1R0KsVz50KSyrDVIwbe7z8O1pZy8Ku1DWHsz6BeJYCPik8epzJAIZ6iNyaBOD8FqsVOJBWgW4tIcyQ4Jcl9nT+vfWOBhWxh8DpKqXccHG2RC6BqH8zqSncfkejoyf3qzdELknLabR/jhpq0xffqum0LBS3JDrK7i+k8Q4/WZu8M1pPa1nN6g1+zT+GuPs4QURvM/QxmYUdrO8yka38jp67Q9CAAlIBcl208hDjQYNvRdyqhn1CiLpK6a3Qrey0p5q2OoblRAuFdDpftXT5biATzQPGWZZ8mZlcUPNtKMj5suR/JM6PQGsq+IVupQ8svhmwQmmHlV7lBmeUkRaVpCSdpjpAklNJwUny15pQZAf+LyPb6RZDt65r/77I+/vEmyvr4nlv5ON3H6T5O95c7XTfmyfL4Zg8w+RsC/03t7v+fdQq/W93/uAD6N+R/Nrzff/T8P1/MAn8s8JezwP/+71//v749JPjvt4z/hkF/8GT/gRj+wUP9L+f+l0f8L8SLv/eqEhgMYThNQF/BWIiGURpDIQIlKQRBMfR7gRH+EWD85Sb4PsWqH2D8AOPfGhiJIssKEi6StMyglMBhmiaTNINxCCNTiMSK8issS1I/HRi/Y4qvsFxxVvR9Hixank9YYpPgCMx2Hkzj4cAjmaupoRU3a+m0+EkH4qw54StjywknQgn0XPG4h22TyAfbm7EyMLjBu/90+1zEyTZ/R0psZQws7TMDwloMKSnqcBf1xRTzYz1an37WKT2khljJD0bZQbcfqaN0exkGxgdd+SM5dQbmKaO2oR3mgsMOzKyFMD8fGAkK+ft0OwQHqn8/MM7haIOgT0+nmCPlAHQSk/pi27DIU5edG79dpz/OYVierwK85FCcE0/1vs6DbKJbEk6nBZhlXRIUhuxQQJfvWrCanjZ1Iosv8doZ0bBJwRPaOBkVSd9UX4fwvsvWteuQC7CVKtCHpMTBqW8xf7wCT95TulBf+Z7QEwimDroM0EI+d6vd8XAdOvUNdOeNYigT6uyuCSdjpUTo2UdHWqwYOVL9qnJqA8NAOWrOknLzI7zpDLPRTx9C3sB1kAKRPEzaXG+vYVr06DrbWzf5kPhoWXB8mooOmdOLfYjimfanFL6cUriObKJw4us8/HKT5p51dnAW4Zx1dwxHKUNG08hMsMGOdXbxuaaUu3XSC6ssenMIFZR9Huft/frfn26I4HcaWvkVPgCVSYyspJ2Tl8NC4e3xRSacE54DQPp3pQw6ETpgy39V0iC5X+cjLw==\",\"e4aUs0rHA2n8iPUMiG16BWnr1BVZMj3Ml6A/uruEcyeLg73xqruNvcKMz5D3FFztOQ2btXTvgTJMWclEi9vd36R13k9Za4ZynRSshRcg3sXyePjB1LHhI8TG4Q2MYR15g3OSui4zrOMygpPokMVu4szgj7Ol9nsFADqWLWYoRVxgB7xGgho/B9f8nuIs9tk384k200t6MUyrC4wSTrALGCZLqmAbESteT4by8KXkch77Q8l3rcsl10vf2+9y1T4hzh1uaUHqhpYITDGc9/ZmKZLIYV071L8nZBmFvn4tYMwoGsIwKCGwBEXRNE2JhKDzNEXpki5opMTJtPzqBPoA4wcYP8D4AcYPMP5TYIQ/wPgBxg8wfoDxH4Dx2wQjgaMEhuE09W/QbygCIRQNIxSFYARJEtj3AiPyI8CI/HrAiHyA8QOMH2D8+wIjhJIQjFJIgVJ4iiAEShdlWaI5XNI0luFJgsAlQePFTwdG5H8HRhT5Y2B8DQvw0moQ4QW+Lc8JLvGK0RZiipR+UewU91YEAHf84XHZscBXQRHBTQIM2XR0KmrvPa0MbEZAx7Qy4EstuH7Uij+rt2Cy5SnfwjLYwOEB453JHtsMCDSpxADYUe4DBh9Jh+lPaGVq5uXZB/OQwcyqHpQhF6V+6ycgu+l2K+dOpftTtyY525vI/vPrLWAEgkiI+NsIY3KV+Q+MMCYgyzD1WnWVk27YGOAo5eaBXplBWYBPtnltNy6l8NCeGgR88Fgd2c/3Dreow59OGA4BdNWd/7Ao+uK24bpcw+xcIq7goCjM2nHAjsb9KuLElfKwxVdPBH7nZCtBqbluN/T7cd5kWPGuiOdIXKfXIF+sEilzxa4TKuxqtjkIvU8jMRNw8bzM7C18zaESNiRHdB7ZVbavN1r04pN+4Kkn9MWmrh7sd2XKBuOjlwx3LI0N67Xcm598/XXe8hVq3XANavLEzHPOJ1HyXFLrsYHI7EDPUlEGYNLVOx4+xwuN+ikmOmAGaYp6j9CZnGl1N8e8M2BS5yljuizB0oSb9e56k8W60G9xYEP9HnBWMuYzIFZJkw/2S9Df4JVR5aUv6dDUA/kICps/0g6oY0I1DpK6biwQPUI7pp535qhuG7FoaLG0rwngB+TdD9EKr+MYTJAIjHuTVSsTtQcBnVU/QPvLEm3Ju0O7YMRa2lauAknSLYvsIGb8QXz3Q2B4Ym8O5wi0hBBGJAKwwvWSNHOgR9zD5JGWq3MsJKVZQMA61YQm+0TgFSDr2fv1e2hi0Ex4yw/BJRpqKbJw8mRR4I6elK84CvRIydYrQRtrb3zHHwgwaGi0HVavau8RUC1lQnn2/NQG3VeC9XCTdrw4byQ9ciMJqVjOgvCrEwKgePlQBGxzJgY3XOT1t1C69QEYhnAjBHcUn1DfnG07348MimJyS1K5NJZvwnhLdevXEsYCg7EkgxI4SwkMTUuCTPKcpPCSwkmSxAmioAqqLImPMH6E8SOMH2H8COM/FUb0I4wfYfwI40cY/0EYkS9hJGkShlCSQL+aczEKJ3EMpnAUpTGEfjeIfZcwoj8ijOivJ4zoRxg/wvgRxr9cGL+u6SeZI5xgMEJheIYVJJwTWQZnFI2RMEHTOFV8jculCQnjxE83R/RfN0dfAaJcd4JGRSpx4Lih90hRgBmBW06l4TsNHxDFuR+jGS9n1Koss7s3o+077zBgzzg1NZrtAn4IeEVR3lGE1PPuM3+SmuZfMOu9MrA4oDPoylHkT5t5DhY07Soa+eIGN2nguARVr1+pafw+wuyrNMSCQrdQEhLPyWJfhNA4AZUCV22bW3SBCbNq+UvMkQ==\",\"wv4+vR8piwc/YI5SWoGAYgYSGzNglswafU8Ar1kuGvZn0kmJ26KnYHnL2hmLiacytc/j3Smb8/V9EgvJ1/nYoEFfbbmnSoQZ0JI5inkI5db4QdY9TnhkNb24vCrj0CSBrXn5X+eX8nFgasdJ8ZOeZtTG7BSgQ7EEmyLd15YaiW7I5YqYw0HAcxz1SZMV942Hg/k9lbeTSe5204HClm4yTMNeD854CUmmmA4wTk08q9rgIcu010klPLhiUO/h9rxBFn2+Y9fkbTDmuSq43kRmKfVNPCGBropYfpdesbiqlsSOtFDcbQ0sg3CuR6dYO6KT2veqO8QTclDD4Cf5YhTGY7lH29Wh62yNV1pV4vVnlYHLw7PIenCiqmbGzbdF169s5B275tghekg3sdRICn1c+G6XboXSJYTPJf66G8g8Hli7X3GZ4UudjZFT+kBw3qUH//4M4BovsvZyRWh4sao93tum06cncCuLtRtvQUcdOuLCg6pCRQgH/Os+3MYegEwjkN9TmT52aublQ71DRwczRhDsB2xr3iXlFuWNbD4UjZg7XXkkmrEAbsVJc7VTh31s794RAuMliWuFrjbq9aXFWZ8JxP7qoACHSMea5UihG4kLFrsvK7lcTBBUs/4xmhDzjq0Hz/pxzMrEhE19f9EzyZFCD+gMD/AaFQW6HDRFVi+BkUXa9ezmXCcQgjZeG4S27+uX2+USfIaGjF15QL2kTifSBVK1Kgc8t4zz/H03YZjT469ljjlCoHmRkiSV4hRKklmJkXkK4SUC03SOQAUM0Qia5h9z/Jjjxxw/5vgxx39qjtjHHD/m+DHHjzn+gzmiX+ZIQSgEoSSC4f8G/YZAKEZgJIaSGEJBJEV+rzliP2KO2K9njtjHHD/m+DHHX8kcCShHyCzBsAzOkKJMMSoncQRKyBTBKBzOMpiAyiKHf7o5Yn9gjij0h+YYho5AERpL5AF19EHDlth5S9iw4OFhv89jcQ/EW6ktRFofoCTtoShrsucS8dUWN9OwwiiWE7lZYPmJVllEjQ/Eie0/rRqOIlxzyDu3Dw0C0NJmcxINo7qLDehl8CcShC6SnHdP3Sq54oeYUs9HnETGUDO4e/jD0Z/BVWEyRxuyWhr146YBBZiNf4E5wjAC038fc5TQ6vvNcRJeNggYl3aLT3y5FfIRGfm+oCKROYsrnCbWuSuVqzHkSGOQexZhBerbzHbjMJHGxr86OGxC7VAm0AewJt1aNh0snRgNSOB0IwybdjoukhC1fhCGkgARkH2djys17/PWFee28F9wsVmhmYxMxpLQ/dXv4zH6nn9BVL10ymnlPJ1GGs3wrFy67/N5AxWLbgTrne9Z5ErKpyJBPaHT9TEIEaUjZ6o1/uPptE6+7PlAqS73WltDu1HYe1Wh3lf5NAVqs7N2tUNajSfY7gMOAKGBxxZu3/NDV/Y3u6l6EXd0Beqq3BavInsnuYuq6LqKd291u1pOlcqYLJge0w/XyMJFq3T+GVfPYOQwmmt5cwSkXL+Sp4Mq3ruruB4ojcXba21rDdFdaHpYkpa7gTqI92QIF1ZURmx7mQ/piT8LdzxQh5lKhAsB6v3+S6ozz3OTHztwG9Kb5Z2W5oMCsdwcRvKzKZ0QPm2MWoX7CnGFrWwJAL93w2DA7/NQWTmTOY8ISdt7na/EDJ3mY+lRVwcQMoZmlTBn4AGDBACaw30HrIN9KqTRtPx71eNDUsynmEgp/MKKYX++mKjad95AyVuAg+QCv0DRuI/5jD5UznCVK3zgYice8nN9J8GppAOoZaK4uBlX0QGkQFBbLwRuz6mbnfwFNZROJY1PFQ0h7g==\",\"2zrlak03rXwV4HvOFG+e6/ZAOkIPcRC9z6+tTV4cD911MSvGvFHN9ps5brK7/VrmiBM4gaZZgZRfrcIkTWc5CaUwkRcZTVEwThRJSsBU8jHHjzl+zPFjjh9z/KfmiH/M8WOOH3P8mOM/mCP2zRxxDKMJ6D3niCMUgpAYSUAoSuDkd4854j9CjvivR474hxw/5Pghx1+JHPGShoikpJGiyGmcxtAcJokCS77qr3Is/RJHnMJS5KeTI/4H5Pg1qvcH5MhzqQAw9wKu0FU35PCiN4RmCsnhWYRLIVNje1hIdbJ8qfGCPBAp12KhbnOcE/k6Y2+2aG2qz7CgczfuDYxRd9f/0zFHm/dZBUySDRFKvrnl+tFaCsw8FhjzRz0QAGUQqIlcctbqKrmK8rzr0nJ7qS/BY3kHle4oSqemnWPF7RhU2cx5TurHcY/+AnL8+i8y8m9DjnnAJD+wvJGvbRAMmxcGREw1+H2V1tbzFCWVZUovIaXnJB+ENSkM1O7kbRUxwf7W7jLWMPRCPYe8RWORWiRBJ69n8QLMhL9qIgqQGWShUnRZWzrOVaHp+GWtdiTc0NZ8Lw+8DyrK7lFoyqF4CHEtD6/1UZDN05TLLeUY+4jUPk/vYevpt+NpAPOt1vLcdvj31JraImp06wpGObhq1PMF8wF6mBSqskhXP58h3vuL0JsFtgyg8jrjC8ElOi/OAn2T1/26WhcoYy3adNG/P4P2er0yc5M87zK4MWMq/oT3AizGnAqNWz2FoVj38RMXpjd5hkdfvO5xsM8BppOTGJ9A7vhkVuBoEBJB050QFfpSwzBeckozO6FbcIirrGLsO1ruHzOrRn0G3pzW3nH40aEro9Cp7ZKKF+XFXdY8oNdeuIdnUCba8aTROsktrlm8PwM+wco1uluskJiqL7FxUmk1YmBW1DoTPYh6kgXJEwULVRHzu6ZOQZiLHi3CUPA+n0M3ONoBdpHTlZTiNSueEuSSY7Pft0kc3Nbtq828bOPM4yOcfDt7cVQYn0q7v6PVevSsB7MUiJaW2LN3LOh++buw7tAqv4RauTZIEFOkITi3cdg1LrjdZ2S6aG7C/d0uBCrxsWVVLbZDc2D6mdws1PGKcCUSMhs4kYBPUFHUUWfbXqu5m4XEUNmN5ZN7L9/UiI5G4ek8n8iy1eH2UhPnZHt64i45cbPWsW/fyNF1S+LXIkeSpJEUSjOayJAExUsaKYsSywqChBM6L5M8IVISJ5EPOX7I8UOOH3L8kOM/JUfqQ44fcvyQ44cc/4Ec8Tc5EihCQDCNv8kRwmAUQXCIxFAYw767fZr4EXIkfj1yJD7k+CHHDzn+UuQIUTCcEimU0EmB0QSVwxQCoQSBpiiS5CldImhW5j9/myPxr5PjlLcJo89YyzrSK6I0vAfrnS1yaglxUvV1WGL3Ut1H4QbAzpOL1aegi3Xu5Md6ryVHcWkCmznKhJT1WVNRYG0Jcv8zchRm0zlN/3a7cKktA2dySBsiA259XNWzQ9VU51Zg8vl5ab6S1ceVjqyXSQPTDA2mh1nf5g5HGyS4uniQZRZIVwN8uKTW/gXkSGEI8vdJVudBUn8/OT6XZQcBk7hpXskCXHsOLOgdBiHprHG3JCC9Vpo+eauai328KGoN4+MbuZ2496obWIpK/8wjdCtCp1dO51FENananaJfXE/Ct0MQHd0ydh5ruqBrQ3EUj/c2v5JlCuCp8OEgjnsrNlPqLehsNPJag1OdPV4HQ/DFBOGt23ASZbR0UbuP2dJpAfw6b4PLxh6M+4wFwZhvjasGCdebuzr7sdrQKOPxtVBSmqauWmDJ5jBwwiFQgA==\",\"k5PvQm1qAhdGPV4EZg7kFENVQqWYsPhT1w99h2DKppO8Dg0N4VKSnT8xt4f30fNjhXv35SwQU4KcExAKz4MLiGnbyIxPrqa52+oZSGiALs12UGYNsk0KHTyImCDX7lONkfzdtxMz8yvsAXlrViBHoHxpnGo/rqfrQ4yPcbwJ31+3JaWH++SgEh1viir1JU2Y8HtK02tZko08+g5UYnVakuwQbgpv3J772+tQ0faOMZZwAToh0qzR36wZFiGbw2ZtfLzJEmrz/JiTiiVs+VwATfHaHAPCAM+uOhEC0yEeiVjFGjM9a2cemm0x0MFFOjFnvvXVeCuExAMrqcOzlPVtNFHVs4WRCdWBLYUrtSJUkU/I5EWzLCBCzGycz/oVTac32dLrk4Oh/RW7U7eCVwoFpg+0Y4rFStJLL7A1XhlR4xwMP5d7f4MWAXvcN60sGvg9Jat7AmCHBForjLRqe6FSKMdMU/LQrSJFX1D8OzkC6U34xfpi6ISC0BxBSDxLUKJAcihBcqjMYIhEMJpKM7xASxj7kOOHHD/k+CHHDzl+yPFDjh9y/JDjd5Ej8Ts5YgiJId/6YgiEpmgSo+CvWmqM/O6+GPJHzJH89cyR/Jjjxxw/5vhLJauJosjIsqC/qgJwCkrQPKchsoRIuiQwGE6KBIHRlPzp5kj+kTnif2iOjNofZAyzMmQ5kqqXlL5TlxFAo+TnPCu/uP5iG6vCENiexFs9crJTovwJSaD99YvdqRYPGUJPmYeEOB4m+FV0i/pn5niL+ttySjC+li0U7VgQ+vQLulhaFyF+KvciJXKke2BKeHyZ4/PiCRIQ24275Gkm73OaBLYbGazR6OrrJgf5IHcXvx478/PNESVg/Ou1+5uYY7FWzQ8kq3vYBsFcEfgTz8SSwPbl2etEPfXucfSIGN4W2MpQKJ/xDGf1W3LbM+A9ZrbnomM5FXU7omPNXy+whCsw5Pl8Ml6EwVQBRXAD7y1LyQQlVZF5aoWwAyca5r87hu+D2z3n1gY9hVlN9ajYU7P7GJzW8cAIxlkiSRr00paioo7rA7hDIMLmnRVzVPCtI1mUGClJLLGrDXDobHYW5Cm+ydg61TUnymHR9OblodVuxg3Ru+yq7b4/cdb83kZpCXfzcd/5wKpAbu4D1GWTIdldO340JgoVeGaUrKOGAbzgjEz1LtrZvkDORDO+twl2YsbuMADBM282+DQ9oBWRU3W2TTHbzEQZDEiL6Xmf9BGWnBG5ZjFoFVW+WcM7mf1YzjFerZtaq2rrAoA4knTMUAOYTu359HQR94jKOLswv8d3vUpN9D6AMljjcvN+/pjgHp0RHNp4VNLBgAJ9lUzXwqRNLkjuwYzGUlkRxTwFBXHqjGWY5CqQ4yntvRtYWpmAxWidnLmkxeQu15N3HPB4UqwVZ6O60Fn+SJ8RApPCuaGuSQW6YhNW20n62/wQ/LlJs6GgLZWeO3UJRR7wWuLszhrdMG5NQR6P/LFd4oeDlPfOOfFGKHBpzm/v5w+86LQoyFqih/aq99Wy7n62KwusBOpt0teJvltWOcWcxO8CsBtFQNxHqlXV3XibbY081MAfTxCgpCosbmZBao0SWoPYG48IZS3l922OD5IJfi1zpJAMwzM4w4kEyqAC+foDTcoMgym0wEkszcmcJotPg8zHHD/m+DHHjzn+c3OkP+b4McePOX7M8R/MkXybI03TX0scYejfoN8oGIYpkkIIEqIhjPjuZY7Uj5Aj9euRI/Uhxw85fsjxVyJHqkTwrMghFC9TFEsTLKehrKBImsoxEoIJHKPSpKDpn06O1L9OjnMlooB/angwlVwqSQ==\",\"WzzJOXijScEwyadi2ngr3iA6xWBKtKBNG8wjWPZeyM6hVdFQLAV1f1FdUNJJDo9gZ5Nuvv/ZMscbFnZrZAFcBusC6DeRUrGt7K3FenLtRHbnMU5+lLS5DX6RY2vf1Yu0pmzXd8NWptRsN5a6eBZy1f0+W3UCkEIaKA/4LyiQQUkUxrG/DTmWPMf9QLL6mTIgLRDzrR+ZWSjJRfB8y7a0xmiTZDSduKvkhkxCsyrJkyEt4DFI72T12T1napvcSusGYpYh2zoeYI2kgDaH7hgOQS/catcaUY4Mykp44D5U9tbcHrK9fp2fENmvZ0xE6pfQUQ9eM54dtpFhlp9act2oQ+zJKE2iR63Z9wi6C45AkYS0tsfOv5PdUzaOKHPq6vNSmYcbIJjUdbm32BttMAOce1jRTjCN33TMAHgw5vjuoa4avU3vZDbBUlMfH4/YsksMHm+MB6WNKgWQakUBAEGNBSv1izCZIVRdrEQHH36cdzwP3fydDFYxSA8vgqOaSc4mIqdzgwIM+R7LOk6W9rpYWMKrUDh7BLttIt9K5EM6catYkW/PH8sJP6mb5KH29gpWWthJ+7UTQY5IHIQfTjz6Z9ZKEHKOp5+DS0RvoJRVA229C2yAaeXbZ2cF3IUkkzdkppsyBTY/HDr17MusQx8qkm2xb3XMC5BsBzkk6Rl1isjrnaz2SflBgFhm9jm27BqhFImKtr5zPdxUVE+jxVjx7KmIjIT+tHmgz9Swam37Kt9jltpgtAWICR4QR5uUJ2sqdvGCCViA4JAw5Mu2ctT8QEHiVIGaM7fEebKxYkJncryXSeIXgZW45GQbqbmleRthHqzLlyfKLvSIeDq09RiO3VpRruqa69B4Nln2EO9q/SbHKMEpUPEutVqRS7plPTA+7o7QUL6KwvbAMSLzjRzpV+X+YslqNEGSMkUTCk8TCEqhHEHoIimSAiophEByiibKLP8sc/yQ44ccP+T4E8mR/l2HfhY5wn9Ijuh/LjnC0P95c6R/Q/8nBfrdHKm/xBzp/9Ac0f/IHOn/o+aIQH+Aiv/jwsnf4N/wf2aOKPwbDH/Q8R/Q8Y8u5/8bOn57xL8OHZH/9UPyL6Ij/Rvx4+hIfaEjDVEoQhAw/ZWthhAYxXGYJHAIQVACJtHvZUf6R9iR/vXYkf6w44cdP+z4K7FjWaQljpMJnZEwRWNUUhQFlmVEiaMplSJYDuc5QUDoT2dH+o/YkfxDdnRdB1cuGj8f+fYAQoPfhIQFKwuSRqoIAN15vFpB2Y25sLiLTaclYjj2dR1Lt1cui5ebl45ZiwNuSgIEkZstAfXL/qcLHXlcV8+ZdKCDUAijDbMY0KIJ2E3V4telmFnk8GXiCSFQJVci5gx24pEIOJL4fPllL4pmq+ulZx8kVIP3h+Mp7qBkvPzz2RHDUAT/+yx0LJ2A+oHeakeyQTC1dHkJSKCVr5IwgQ6qNVvoZMi6Co6IIG83AWL0V8/gypzkw/dCvypgUgcp10WdmhtlMvFBYbU7bqf4GlnU4BaFd86MjnSuNncZ7YYMIu5gisJP5T0pFyxGDoqVpTPgkr/uuux3spwnBp2WBLTWJGEfw8vxF27M7Ud9JlecMOLgf33c3mHZQPNNiQSaHZJrbdfB4r7fld3bKGJ9FhDX5jkuFs87Oba672X0SV5xGz0MoULC96RhdY43hRVF5xYEOLkKpZcrXGjotkzdssOMkWQ8L9NIhf4GybT1EKub3YkMjQHKW7HanG4XWWzYh4PmAbk8JY6uOf4BwEcb3iSknJaOMWVuzmcO69DsKkPzfpUaiWXLm/2QR7Ov9NgaFV2emYRpMb9lDg==\",\"/0QREoT2HdO1Cjwu1XfwXnwsJlnlTfsQvSJXxHc6HbRphmC2NOnqi218KCdOF+3xcJIQJFmOp4ji+P2gCN7r0a4RDA1g7Hv06jv3nW6GgKF+QbNMTwefBOqKRl4+nQYoUMTypB84t2jSYI9Y9LC9kZKIBfa5qDxQdbPe6XaKId2ZwKjncq7psDnug+8gccR9FT7rSxWnpwQAPCs8aQ8pVoIIYPi1NILjq5L9nvTsifh5O2SQdBxMQBhyY+x2nw7vUsGaDXrOYtNE79y8xMG+8fMBK+wJqepHeHe+zpu04PXyNsozJGVJ6PCnl9dlx+P5bUIjjQBO/xs7xnvt/FrsSKQFlJFUkWMYlVJpnkEYkSEokpAYjWZYDmMFjeDYZ6Hjhx0/7Phhx+9iR/ivZMfl6xtgeX77Z8Rbi/6mEgl/JPIjkR+J/EjkP0ok/ZZIGIMpCiXhrzJrCCUwmMQIFMUICiPQ755/hKEfkUgY+vUoEoY+FvmxyI9F/koWmUM4nFIwCtFfA5AFlREoBVNpgeB0ghMUWcIZDRXEz9/0CEP/OkYm2MD6vrtDBhWUgJnFSVLf0yS0xEVSm30toTZWtllqzDs4Ds8zMfBAJ9sGqRTysWQodPFHJp5rLZNP81Xhh19SaPWnGEmBKWxu5+biTdwFkq1wR95ozqHZbjSgFblhat9k5PYCGLkyxX2WhOv0VIT3UQntRfUEV2N6pMxSLRSE65i+MtJmE39BuwxGExjx9ym0Lu919AMYaUIMCFgKqWMq7bVGWNp3JqJegMbjDvpcpvvISSAUYBrAHxwK2RXtP9+rEp3mpm8vbbFAgVFP3LIvaffIBSWsB/+8OTkv1AY5PsnexophkAWoUC04YcZmDN+FxNwKH5C1oQJKJlrGnKvoUR7E3sHlbpXXDkwiQ7/0nPAOSVJo5sVtR5d6Jw3sYPmOTXczBbsdiYs5rUHs88EMusc+QFJ8RPYTQO8hkvH32bp7vmXJiwpotHtnioJcwvldCL3IObcTp4HOIrfeVdU15FWLui4rAwKeCr6TjRNtHsvtITwnBKihELAM4Znb39phBgItepm6C+3XIkeeTCPW0UYRGcOSjG7mlXTBFZn58/GomKyT8xCBiQijxVCE0K/z8Kk8oFYCt2XzA1mwLXBl0ku93Un7JPA85bAycPt04I807keckBzdWmrHYXfyjbk0aM+dpWc3Jx32pWYkWGatEo4VF2Y7cJ4HyZtL5EbUN/3mXsd2xfTMoy2O2Hn/df6ZSCqLp3rn3fl7uyolY44bGcplHxG7VxMcdwZNldfBM8juamll7P3AFu7Ahee7HUhf7gmUDL4dY6gewbjswfAODtczNKp+s6hzAmaPLVb5qJkXMnvmpN/a6lyeW/DGbB/RrxXw7x1on0QeMzgvsin5IGQSI0SAhQKl2O3bnFhhR3ZnR7W9dMPpOPVK4h37t4w2wsay6KODHxQWTotmPBwalKK4jupAjmjoG0YeYqj/WhiJlSgK0VRSEAhKEmhO0RmUowgNk1SBZEWSUTlEosUHIz8Y+cHID0b+fWYgPxj5wcgPRn4w8hfGSBj6ppEEieA4SWJfnTMwgpIITtIETNAo/N37H2H4hzAS/gUxEv5g5AcjPxj5S+WxEwhBoSRLMZgkkyLHkQKnEiJJsa/iLRSmE4jEyZL4+RgJ/+uB7Bs/jayx+SACIIdQJ6VMcayPvizxfoV07wrwROpIGFcEkKw8Sb9e5W7kIWCimLFV6k145orGtBvB2eDsdBARSgP6TycjbU5me76uFFLhYHJmdy+4HLTNlfqqnAYqClMchKeehM5SjxdTs43L7g==\",\"8U3Qc9v3M2LpMM6ZCTnhY3orJnihkZtX+GvfMfq3IPhPxkgCpXD0b4OR1aA+fiCQfV07CGbYVad6yUxo4snquoF7x+e7Zm5mhWVUYMbi86zGzWRe90K+he9ArpRW2tl0Oi9jcqDRIMU7kyE/lAbLOq5Bn5nQSkJIM3FKKKCaqG6Ynlc0G+OqvzFTvErlRuJ8S2qyFeGRo+LUftufti3reJUWJGdBC6fAZJMw0t7E0TTlTLfhmgy87//VXzzu7jZdalPmpyTiBnjWPVHN9BpOu0znrucsgN82fA0FJuQHadqrKwiCor2+zidtrFAvkmQ5IG0csPI0qLpMJ5DZBy2dLXG0+mSmPREZsRIAmdRW9D7NFrXE/bt3pRaeZEebKuZlWazUIR0OE59fwT1sohh3MylTusIhPFq6RkW2J7EU8UgOrWEV3u+y1iyecZu5B8ONDw9WJwGpxo6KOdOjpGrpj+3gccDGKEO4laSS5lrkcaFKCrfFevfWDNBmW5XaiuaJ6lUgbCjiZr1NXnf4nnLg9HQH2TsHcxmkQtUHYOHuamIc6IK8d3D6rwz2rxy3A62W+BurRUyO2VdNwHNBDu1U5H64HWeXYwlNOEqmwTO3V1pTOuh7peLcqGu/K7FhT365SrEDWbe5vTHZMFERZENimRqzTYA0xa+zWsrN7LJB2K16p78nI1vNDtGN1PeYB90Ai15kJ9nu3jrrrOtUPzsRB4VK2mIQXPLxbWb8Gk7H4wiqwH9/fuszAutnO+yLJ/FMD1W3+dRG/llHL0uaCpz5HSNbHaF+LYyk85yCMxqGSBJB0ZxCCYggUTRD0RIlcRTGS7hA8AT/YOQfYmRepGv17zL2P/2g/yf39A9/8x/+OvGnoLYVczouxX97zevXsy9fpvH6b2/n+NXx8aODn1HFv0oH0Y8OfnTwo4MfHfzfdBB+6yBGoxhEwxTyb9BvJAJBEArhNA7RCAF//6gi8kM6iPyCOoh8dPCjgx8d/KVKqTMcTQsUSgqITBGkKHIKJjGESrOvtDQF0TRcUgX68wtiYORf18HNcAfZ6Q3RcGtuEYrxeMX32Zs3I9dYzBG6YLJ6VZCiQNebGGiiucv4UPOOslF7fZaSqIGXIPQg4gEksPRaqRs//ZkO8hfGqNWBhnS/4lWFmkCJcXEcmXNlDWyhP72taTxBZSuDqRlIzQBdnQLB9MGZnRVzDo7SBo/jMWvXUJfeK1C8Gd2dsPprdJAmqL+NDj5C+/UDrdRXa4OA2YVkCN4l3sEmhMAt0r2HoafcB98nb2qmOpN/dbIUFQM7s0FbvHOzMsk4KquW/PhsPEEByDjfXxikR6yqNHMw3EiqmnIZOFDtZRssX4v7At2xGx/LX+cxgzamsglvq5OlL1+/5Zrlm3u9u2UfB1buCFMaYufa1vRLguoTWxgGqbang/vvUbt0deklyL34Wh8bFGn+gnuFlleJSOc9zkWxfUdbNkIpHTv9py0pkE5ss7HehOJ9/RhyuCOnEaY3LMvq2EH4uCFYb+Mg2pIZzxh8qxeeLI1U+exfyS2yK/CcSz9mmndu+uLX3INuxil6oDKmV5GkmY3vuX2qS4BOAOff3cfSZ1et0WRpGL5s0Nh05DQ3vXPLVWmQuIhWT79czEg2XS0HtWWuoKsl9w2q1kzmyhCOjjxVp/GIHlGhKBgbsTH/HrVsNGvulWOBAD8Dr3RsZczxMx9X7qA3mCtgldXrEFtHVkvtHh3hCS33jTjOwQfen7J8JOve2QxyzNYGkPBgm5+OEUoxlGBBTDhSv3N8Zqbz/qo1eHZ5Ouwfz7oenRvw1t3ebfd9D/GXyg==\",\"zzc30bY7szkiLg23VoRgNQmcU40E5DQQPlCxcMzohfVqGk/m9/u3crhXL8aTnmJlZqTwxUUHBxXWcbm6+MQIIjVJ1wbAW2zQkhCHjZ5nG6otGgu93z8QBNINgHAf3mc01blnrKy8rkJMmem4RB30/ffctP+K0l9sXSOMpGWWZwWNZylVZDiUkXiZwhRSZARF5QhEQGQKpR8d/OjgRwc/OvjRwY8OfnTwo4P/NXUQeevgV300TCLElw5iOAmTNASjGE3BFILi382D6A/xIPoL8iD64cEPD3548JfiQRyCcJzCCJpGSxqjCjpNS5jOsgROEDTFchyn0Kz8+VsVYfRfTzKbMi3kmo6Gz7F+rO4E2LiTtmkjhgPkkI0ltodzAbf4KQvxtJSnOt29ER02gtjw4yU9ciz/f9m7rx3H0S1LwA9EzKF3l3Sid6Jobw7oSYnek08/CFU1MMDp7qpMVAIVU7oN4AcoCsEIfVpr77HWFSdrbHgEYiGWVsD6XxdIh5xscwVtexDdTGXIewUQX0v0rGhoYUmmIF/PLnZzwpoUEyKZUq4YDWHTll5XWGbv3ZEhpadBT0P0Rl47zlK5WnAoZa3llMz7BU1mGkH+Pk3m2hyrn2kymzsIyKGO621hbdHBzBZh1lZiXZv9kITH6qwxMZW0oOQECdRuen/V53ssnk1Nu7B78HU2l9UKJko1yEQxtkQq99qFICpO5eZOX+hCWlsvKONIK3VsNA9we4f/YAB7AAGtPXSK8EGAKUtTFCKqbWpd1XXFF8l7op4F1tmqGnWnhT49XqsTAzqqN88xATdsDGVKg9TkI1uDwTQixebL22U8TdjJQlICzQfVZ/wRBCJkX94EwlXTOu+xgMtCluyqGLlLWbhF96eyUDELQJI7pdBBRweR2MHlFPTyLEx5jZHVXOBQo0LRIL/O4zzQUt7l3YI7vEVla4Hc6tdP0vIXib5B5c2+kNf+jJroAU3ipN00Kpfr9Go22Xhvc6n1HYFCkNAMzXN5tF2VFTGPpTgZIWwkXCHplgDC+qYAilVC8BmsVDM58vro3uE9S+X8JkrTe8fN/dBKz+dDmwoqbIo+k7CTu0t45WJlMAk0B5VeJZtlGd5o8cnMv4c/czTctX603HCbJ66reS5AnQNlrkeYoja8AjLsk9ABOAljaMOmDki8SN0qs+/wHrflcE7SekK4+oX0biao0c6VjBQ6qjL6/UviY6QGAObp+8kZeKplQfy+bUplvRd4ZzE09Jcl3Pxtfy31kiKobZAnREAYYhO0Ea0v8pZtLFX6/OXqVyU29+j+7A7sHr7Pl4Iysc9kd65F20R7bXVKOfytM8hcvWWIpL9+40HVLeZvtkA6JwkKShMEx3EIhjEKQukYRdE8TxMSQqiETHAUy+EPD3548MODHx78VTw45UMTp/nv6AT9C36jx1+JhsPUD19Px3z+cpHsv/zt92XHfyCK2EcUP6L4EcWPKP6HKKJvUaRhEsVw6J03xEgEQ2CIhCkUQ1CKJH5YFLGfEkXsG4oi9hHFjyh+RPE7iSKWFhBCQAiUkCmJUUkCxSiBwzn8taYKiuMiS7++TvkFooj9d6JI/7eieIssTSYXAOJkulQVK/RP0UoIRYLO4h7fbff+AuByV6j7niFjt0qXfBk2qaWYRyzOI39Gl1jbSMO/yraxJ0KzRpj9wzryqPJBUO0qx7m8GLP8xHVYCqmHCmR5YhpL/ESM87U+E5GpWSqDNg3cuujYwLNJ4roCKQIWbjBtTjblyicLW+2LQtPsV9SRcRjFsb9PHblhOf4n6sjizoAUR6ndCeo4Gjc25kpBu6/yvQ==\",\"S7woRkLxaztJzYSopHRHFLiHF+LvRSEhEIDe138zJczCaIpC9X6vfEbaZV0VlhlqJyBW+6QLtwLec1KPfEIP4FcLXe/9xnfT11AwJhX55UtlSXhIwDbqCil4z9C0XyhOlQS0aiyvNNxUmiFxn20OFeljN/06z9wXwt2CwiHDQdHPwnLPyBeivhmEhr2n5Z1N2eXWViZY+xKWMAZ9mqfB+wB0vWf7vbb6EZ4TbtPGqdlA2YXyPEkjtrsPbYCpx7b2hEgdHVaXj/h1R3qGfKQ0ARkZ8BbR6hoklg3MVU0sXM7r556vlZDYGbr0c4FUyJQkSExX2zCvPNEhNErE4osDEZd4zzYs3GdL6A+ZP7hnQI0vbKWFWo4eMMi1pniPj/Dc2PE1O15p90vuEXCC9a2QsVHyDhz64skQC0MP++ba0kGbviWPZ63kQ9/1eVPg8B2jkNkATbarVLxHZ221qmC1ke4tcmRQ4AliQIK8SKlJ8xbvQm5PpE4Jl3Kl2839howmahiEhVgi5fQwnXCVK5TE9hZV8ZHs+pjz1uu6rCBkb1w2TspQ1zINDBNjYbUAXtpgS1lYSZR2qE9Ir2kQsIjHe783hMhEpA5BGHPq3Q1Ed7w2VhW3Gbp8jNueCNul9zA9dMFGaQong4I8CTs+vkrJX+eRu0aZvrYc2QwNxVAIx85dxhPk+b6+YFmZj/n3wCHPAt9LFBGEJCEMx2IEg6EkTr/KxyQF0Tgd5zmcIEmGIxBOQB9R/IjiRxQ/ovgPFUX8I4ofUfyI4kcU/0MUsX/DBAkRGEmjX6mPd0aRRnCKglEYR1AUo3+8woz/lCji31AU8Y8ofkTxI4rfSRRzCCuIgsQJMk1IGiliCMWpLEHpNI8zGKVyEqULjPwFooj/eVFs4UGEZdifzQzdwVWxQ0Kgo7IzxFSeZ88DygqTWC/uYn0AwNrnN3iLfBgI0tntpuxiIq20YMagOuSBFLbaB2UG/dHqZ67JHLtkq8HEC9whIX0/ba9mWqPzIKBOVHlaBizJ3e0ZMbXAVC+HvW1F9bw/nhQCTWH8Eqw+VLtAXZtnpGGbJWkiFK/P9FeIIkTj8N9HFLFb+xMZxSk7GOYVDETkMpFw15/VgSiMq910rdse/dIFz2PT/dRqCaLDgQcis+w74+dQFJUwhki0u94/+suQlGvx0lmn7WuvdLJ2+dAAY+j2StKjh5Ule+IS8ERkkH6LpJ6UkglyBpDk8rVwuO7gWj5PyvCqKcily+NydRB0uLsxR9dJYpO4b6IPu80SvTN2GI1tpUmBE3U1bSHtMotHh6uSVP9iXgV+3M0Xx2hA7Jd9c3imUtov2+1L27HWd4VaucE+G0gs96QGxtRUCcy4rMiwioBETokKg7N2eRNAWFKkhWa9pgmBFcnaBq7eGUNI59bg+RBdWiZyLtHrKQdqtBmn223pKS4oBYu24tNtAJpqaB7VKJ0KmUJAbss740fHTuZtDiHJIhwBPG9G5PUU/BiNoO3R522z3JgikBSYcbVQQ/0g69unzbny04re9y+w7MO6LZj0ypLy9cBjzp0479HTbB0R3MjecSsEEJpRxc50ZUnQXw9oiR8TzD2+zrNTcVgbxjrKiRo35FTQLCSb6HU7miTg9WEzJOTxuAvC/eGzV8hlbEEWAbn0Z/h6DziEo/OGTEBs7Pcmtwn/SF59TkzWsT7dhLWEfevxwuYtZn+ZcCEjg1nbHqhz8uu9etuLDZub0cpGzBDjDIfBB5mNg0cNoIl9U+Y8WSULBWTIiQd7CQqWus4Vb/C+pt4DHs8o6HISVSxo3l4WbJ7Swstydiqs7vH6ChTt7w==\",\"FWbxjLNvtvoZJWMEIxCE+HrGoGhBxwRUJGmSpFCaYSRMJRhKoB9R/IjiRxQ/ovhPFUXiI4ofUfyI4kcU/0MU8bcoUiSKYQSKfW1MoUmKRiECQXAMwREU+WFQJH4KFIlvCIrEBxQ/oPgBxW8VUaRwKE0LNMfJFEEILCFIBKPQhE5hDM++ms9kmkEU/NeDIvHnQdHMY9rza1SziAAU2WdwazRuisiOGfBOhFu+Ch5tH4x7ooD8ejGSesPQ64HXjbwYquo38HFykSQJ+ej4Mvtw0Uzi/mh9M4+5nm8X5JFBg4aH4eXKc+mAZX47A5dS9SYmOW0qDH55fIFiDV/AUnNt6rdtkMaLCewW/3D6zLmtXaxEOds87idX3MLXrwBFGCKIvw0oti/u9eOgOCqvimG6RC27wZmzU6HmVyRFS6MGIeNHzA0Wc10gcaOwOrJg19qLNl57RwT5BuEFUuGsVe5YBtuDSg5czAsNnRtomKdXsVD1emMKeEgJuQYddFy7scbznnvPxAukJIVKQRXBXQASTwIFb5UQ0dfgMF/C1pw6QDynUhMRe9o7SkDPvRaNA0CDd0QNi1RFw+XCv5NPaWK5p02jkHjQwSyaoIdn80iQdIFxripx0jqAvIqZ+I06VtJ6nz9TEjQSH8DiiydhHpKns4ycTJAxlj+h54ub6m6O0EJb9qTmIdLpaGvpAGXVgff65XLc9ArvltjbKlrEVEidertDiSffxjAxU+LylEFF0wSeEIS+JQHpEeTAHK1zuLxLu+j91WpqW3ScxV0WMpQ5DTAH7CXCRQHB6wC+OvuZ7vlUHdF9SbhbS7lLXhDEu8PbKwGYoI/81Q8Ojhf0SzenRtteo+Wz/Xz22XA3ccrFkD6GVoq1Kc0b7ZukHIb4Bj30yMaT28HHoBPJrSMOoZUWSbkkD9C5+0Nltbi4760rsLbEdjHT46Jz2Vzu+OQ7Ioo3twxwZwguEeoZB+VdN/0syTMUJu9SRhWglC7ZhvD4DUzQVF5OomgtbrsivnnPNIQ9fVhy26iKMR+XhpdYuxeLduMWvjppjVb88olKbcvNzEJfdEReMeAZwC0/X+/fkhy7GOLWpM/6MfP3B2VhkhCpfmHqN7fCdXZVsN9AcZhr+5utb04RuoCLFIdJqkgJGKNgGKdwAscwOIVQDCVzlEoo9AOKH1D8gOIHFP+hoEh/QPEDih9Q/IDif4Ai8QWKMISjGIlTKP71cxjBaAxFMRKCKAqjqB8WRfKnRJH8hqJIfkTxI4ofUfxWYxTpOMuxGI3jgoAItMCQLIYIHE5gHIISGCaKrCgK+heIIvnnRTErqbEo7+Z4g5juBkIOagZP40hknx8NiNDdOpMM68ak3MotVSVRpq5DQmiEBiy7ZBH7Zj9J3uHvmwlTs90oZpiTzB+Ios0XpvfM5h5tvfM11C2T6znNdDnkOquQWwM2BROP3Cb/CTFyqc04pd2Pesk9p+wP50UNkLI5K1NM5c4/W+UlzkNJYmf0K0QRQmEU+/uIYiv1PxFRrDwbBNMdkoo6MyCOq/ialHdVki2qDMHH5hDqoDDJacOZAzzvUnkkC/GOqOXLzeAR7n6PPO3JdUOZX1SPP+35NsDPJn50KECjfYeAM3gtHYk1930XnnHNpe8xiGh6BznBrN2pR7j7aujxVt0UQtfPzphno89a0G/qrRQylssk2wSTYEfxpEbR871D2ALxSmFfBVP6dcDnzxhFW783yQAXFDAuvXx2+oKBFoz3CfAsLqrWR1TQkIoS3yL3MFRNRcR7bFVQzPr7FRz7Q3Aap9fuCNEuSpTRQWrnqCcSiQBO3ZCI9N0ngw==\",\"YXpf/7AkDm62TW3V7bqOEKhvmmzfU0/ZhRNJ6EPEFbNHuuRGtImlPpyMYYLIyl7Ny/ptS8x19uwaDMJVjmPBkWjC97Ui9r4EVh0pkWqmi2O7vColoeMXG4UiMowLfgh0/I44nojPudFrMQ4vvRUvGgDD6VHchDjg2m2HHHRo0wqy0lRU1lPLauYAOZvA55f9jjh6+uW15hG9YDHD/UJtVrgezYhT04tcY/yoIRVpu9DOn/Vi6cEYkrHUAFhjc+J7BzWWyfD96lXsZLKJ5O4ifJu5aoaxx2bOtW5R4/xicSPojHjVNwwWDUriKMCXwegd8fRDSm7d+CIvlD+vNYvMewfFMmsM7CKKyYzBQ8c/Y5VBVGm6C4esqREtIu2SzG+R5MHC9klLoj2o04z0lUSG5gkRFqPqsa0bykC/RxTJHXC/lyjidAalOU7lNJHhGJ1TOfJVeSZzkqJpNE1zCqKSGMc+ovgRxY8ofkTxI4ofUfyI4kcUP6L4Xx9zfxNFAqZpBKLhf0P/QiiYxAmUphCCoFCExH5YFKmfEkXqG4oi9RHFjyh+RPE7iSIZIxRJJSgeEzACQUVKxwicEQiWZzBNkySZIQlG4PhfL4rUnxdFLT6L16QrillUysWWCa/YL9LEnouFdaos83o2nkuf8OKF+STWuaSI9CDCEblWIGcBdFGz4hLP5dJLBlQkYlkUTv9wb/PLlKnhXt+2vo0ALUGVyZMG7FChIDObRMlt04foy3IfPlOzNp8E6pwS6a0rT+mwlm5PQlsdGVVCFXk2B38jH4OU4g3zC8YowgSN49DfRhS7gsR+Ym8zwNsgoJBgiMFjk3uvTNEtaptTS8d6mg2vZ2nPiSP5e3NNeBF6R1lIwjujF71wHozW2Q2TS/VGvxpEo+ypA9sWlTM5J0awfWwXXsjLonlkAd36UC7gjDW8M3JhSjB8UJ/geGvMZyjcemdJboYYpiKO2jDVngSnULxzI4muNibD1ZQapQaHOqD36+94aJzdQo4s5yizzHEv1M6g+ZUEVOJPTl4i+uBORxFRIM4pxCOdDatk6ePOsO/rz6A6zlX5TNbjml14HuXeeaZGCOks0FfBWZ7yneoeHQcSFtzfAFedkJ03UyEp36Vt9+FtrHXFRWteV7CIutzarMhjxqXpHUuXg6lwlkzvZ0k80lwQ7UnkIAp0Zix8i5jsLhj6qPxUEYMqROOE8DpTh2RgnIOg9006HGFmZOly4av7s4wTUK06CgmhPnqLpMiPWiB0eP0se1nxN5uYboOwlqVFAbC63+7rKT2bUAxoZX1WtnisIjphblJV5rv0DLoOY5BHC+tRIe6P02m8h8b7phPEEV+tJkMrEiaOJF8drfeSwU1eCdx84CRIv6cSJi1OD/ntWWPLfY/lGaoW7eaOMg7zpwCyO+gvesIXjFNj9qZ4JaYFL5vcwTyf6K/zY5n4OaHxE0cSNmdhVASIfG2ZrLNhgituo2EnYJ+WCpFXqaQjDhhLDgVq2ot9iyqTGZY4ZSCE2d5ILFiTvuQLdu0uRge1DSq3CX8TRQE/v1npOYULpEDwOCHyBCNoIi+QIqGQNMbiNC/SPKZgMkeR9COKH1H8iOJHFP+ZoohAH1H8iOJHFD+i+B+iSL1FEaEpCqIgjPg39C8UJzHqq/eMwwhCIegPjVGk/wX9KCfS7xf9jSyR/v1R9IHEDyR+IPGbQCKNE0SC0gWJwQmc4zSVEQhNImiOY1iOQgme5QVFZNBfColff1b/tCI+ylOea+MgL4Y/KlGNCamuSuPaOxEuKZ4UpyeTZAn5cue4QxgXBLInLuM5zZv8ElsJ9qKiMQ==\",\"hNh7gE3IvWqt7kWX9h+ud64tcFxCDCtLpLpcr4uGdjP0NKOHSjCzZ+osFr1KNEHcGLlilOhmY05DzJN+BAyPWYUXI/A+oguhbQCzQtaV8oqY7pXx1ysiiaHY3yeX2E0b8xO5xK4pQTCFb+eNj6jC3oWg5/Oc6jIrbABwbul7vbA4SoUo0uTH0U8DAr1zaSHPMQgTiZqhE4MChTmTIhVq1t0kDs6NNBssUkfeyFFUBUww2gJfQCcHpyzUeZ9HLcFB3YTfFrJ6uYMcePBjTeNKq41i9CgxR65kD5INC6bdsZ85XKdLCASFvZDje5nIlhVQoCYG2/CLqUS1Xui73fsPDjDXsLyN5hXGx/6alltDbY1U0rhndrpthdvzrXBR5OoeOwjphNYmGT20Q4Fe+1UNPMVegkDcEJlgdUctzQ64hgvtRJ7eW38pyff9K+KXRqojgljiZXHpvua3RaY3r3NmG7R2Fr3XXhcrO2jBoYw5uyC3VAUBikACxXv0oUJuUDvnaevQnBDXFMTBpYPXElJojqZG8iMrr6DhLLB8WELQA2iKUY1NX2v+Vrxo8FpqNiVUTrJXYg1pmvnac5ufD5VcLHY7ekg9BVYo01HjE2MTC0EaMhNjzOmtcElUPcUxMwbsHD01aD1ABAI0v888bBl3vDSMyoSzyLKR1mg4jhgh7ooWqMCX8J1LhZ5IQkG7HkkvdevQRKL0EQJrBT9a5dIdzxr60gNvj5ZSGKdukeBS67yEEE10qffoxhCrWEexZH4ThYrU9Jqjb/qQbnvD2TivwKA7IKReDucTu9XcjZqoeQ6Zo1ki/b3MhzX1C2tQLsWWoldo/jZSYHI8HA5PhAK+3Ov3XOJJz+Q3yyVmFIXDBFZkNEHQCJkXcAIXNETHJJwlJIVhMYbR5EcRP4r4UcSPIv4DFfEL5f5nQvwo4UcJP0r4/6cS0v+C3kSIYiSMEhjytbsZgQkCpVCUhhGEpqAfFEL4x4UQ/m5CCH+E8COEHyH8VlFDPEshFC/gPIUSKMPQOIHjlIBRnKQKEoFxiEaoJI//YiGE/7wQkkXvBieIzxaj8Uvm6JUz7J7YopcwVEDvlRg2yNpL5aV99l7KtIR3Q9YbeYF6EH9JTonhsNrr+XC4qtZpmdMykF3+kRDyutPAp/LYfUSa2/aR760kMKcT1POTvc14XtdFrz70knmVcsWYM2BSmH4IaX7KViL50tTWKy1j0lDOUHlvmpuDazoY6PsvEEIch5C/jRD29mX/zLpmfwdB+1xak27huO/S+bbeLsBehWc4BQiTtwHZXAnV3qZZSRTXp0b9+jpP+NEttXx8qgFSwOLLGiDad5+I4NTPS75Wk6xhpdF0i8yLLQlxgfDweb/xwpq9hShv0OftsZGlNjciULZjthiylj2RWewqBHaBOLnXo/xAn7cZBxknThhBxJ71JdjvWYa+AWg1iCmFF1+PpRbDvosKu20IqffILkMEJCQnNyl6xhbIoR8vaVqoZmrKu/CeZbiq8HovpgILtAQdOLCPutu9s6BG0fnOPjMxnx5PFcdFYLOGYVdfXJFA8wKOPfVu/gp1Tg4TeiDh6evbjJu9piiBDhhx5NXkgkY9VPVjowlxfnXyhLDyxYBeM0XlePs6fyttsksyzW5URia9i8tz1kBZTpUc08ycHQJ0Z/UyhVFs4Ol1446DjIEOOb6L3jvnmKPJTQ3AoxgiqneN5AJW7ok90rvhPm9aCGVuPjml7Tfn67C4bHhxMbveFLZd3zlP0h57NbNnDylkJ6fSsXAPzBvd2gKeCP6oVCwbTZjAMdSjiaNemgpqYVi+syr2zin2BA==\",\"fHlRZSQ8GLpzXOFEOUhFIve7JiZGdkJNSB4g4FgAGyfJw+3HnLtX+0rGU/vOeZZ3xx5FiOUaTh15rhpN9JGU+yTW2n01LMIHU9nJE+l4vfBcQuiDAHZnYWKDbN7vfzYG61qdGMGlIsSeDfuCubOFtiAhdd7zt4P5TQibk1W/2SzEBCa+viaKaQQjUCKGCLhIUYhEcgpLaZQq6CSGP83ljxB+hPAjhB8h/AjhRwg/QviPEUL4LYQYTdE4TaNftWQcoQmKhmgEJSGEJIgfE0Lkx4UQ+W5CiHyE8COEHyH8VhnCAoeQNE8RmCILkkwhtCDgDCHplIRIAkfSFMbRgkb+YiFE/rwQukIlUPI2JVpvVnGW0epDQhW2vw2G8tAzOsrulPIcE41lgdUhDjsY73I8rfd4Y9h9rhNav1Wkvprpst5pAhaXMdTsP5ptyCH67bVueA3KqmdLSMPI8KgKYaW17AbFtjmuNwxmAUMid7lMBIBL671qHnF3aYRQXP4q13dn2BPrHFjt+XCEZHcZBO5/QROZxvGve/c3EcLpCK2fyBAyoQ2C+QVJe1U/HuMa3AL/3kA0fWsxaNTX/mV1soIlhdknz/mcyimP3k1cEWXPc5594DWKbAGci3BYuFGUprPLTZqtm5ZcRxNpBca3JHn0JjAgp6kJPJW/r7+PXslLdTAPaoaMsZ5ciTeVSWU4nnH7AJ/GfkZtyF92S3ME8rKCYXyZ+NOkh+69Pnmxwr0hb51bRZS4VV0XxVlR4D7sKQSvEcMgx6YqgQVc3E+I8jGzHAikslcueLDvJmvoAeszjGFoxsneXeOSAnUbRTIT7t05gO6vteku6XGzXjIfm+2VpjVTIdmABO/ZfPEWqaszdIw24GvMaTbPPNOa9E5+5jrU9sYDnF9H/Ijper5JyVWfsVKSZ33V7PSejRjvPkjy6zSZ6bPRUxURYdRLVYE8FWcisY6yGzfLmNfhZW4Z8+pqKmBwqUcFvYVNdGF7u3P4w0b2DKiMiBHRdZbXMUCrk136F5nyHlM1fiIRJuA8pbpMBMkVcbIQ3+un1Wxl7npYnunrGSugktWj5eAo2OUVja0WtTHzXHq6QnXXaJcXyhVjT2M+r3pvcGuzLuiUrgINdrmrSbU9CBNTkkgvwbA5qbN4KktVh/v6siwBDpqssjTkqRtgEb+FlnjwaS6cNqs2VE8KolVcD0UO7JHKoCfl+6AgaDU0lBgyyooJ1TcGQKz1KVCsd7yb3HXUkpFY3GKFDYxmMOLO0Y5pCvYYawnXvem/Zwhvs1F+LyGMcQhNyYxMCJrGcgqnKTLPYjjBcPjLCIkcwxAij8mPEH6E8COEHyH8Jwoh+hHCjxB+hPAfKITIlxAiGExRKExQXxlCFMZRCoFgAicQiKawHxNC9P/8RM/469A3U8LfLvnjhB8n/Djht3FClICw/IsFUaogoYSEiySN4bQoihRD8Tyn4pSME+T/7Rr/XwAAAP//\",\"7N1Xj+MKmh7gvzL3xA5zumQOIiXmBAML5pzELP95o9RjY3c98JlunDa69+iyVGCJYqlU0KPve98/wwnRf/uObeO5yep1IjsM9z0CqNuVStHmnvMo2cwFeJIlmRZGSWdcP2FHO+dAduszSWoIgUFpIoWKccP6mwer9ZAGw8aiEphixx+2oJBqAuAmoZBtmbuAOde25J/+FZCpLzV76scMfc+BBr7NjFJaZd1ymwc92/EM4rwEgz2u+KvY78/suRkSuqJ5pcypsmE/RQoJ4teZJXxi4vYDs4RnWoJgKPk83yl81HjIHNZ4lRhm8CRGkR4pgpKjcIoDTzfakF3tQa7es3AwtGgrex5ronGDZ2NuR0biSubKVRx8a1wDtHm6g9Sok9Wd/RxlXk52Oe9DfZq+9Rr7j+kV9V0sz0UopP6FmvKowspDq7UANPoL2RnqcGGMaZDEirxuJnfedsuAAb9l3sUGGYETrl4iR1LecOKakA2r79PIhBasd1DYRo2w8SjHGHBdSNaPHCBgPw7hr+ODpeeCAuijbm3Ykq035oy5BXeG9LXyEPoKlzu4U6PwcmdRa6ARcvrmoTRn7lDvzMEG2Dk5YLuIaltzV8dHaHuPDlHujnXgY7lOi0Pc77S0UDeObWxOhk7DgVE6e0zvzMGMf7oTHd3VaL8TsBjg4rE/y6QQsRyVmvHW2TzErGqAbg69yB2asAXLsx3Xd9N7FpMSEEAAgaLf47vxcsgr3qVnsz4bidvnKaYitnF1p5v5/FodU/CRYaIRJTJfOPyWzgshyWdQPs5KKu+JrKzx2c21XT79A6gPijkvTNaAGuI4inFRlGl6E7HJ8xw4//386UjcfG1BNpwpa75egSlUfug0VsHcDDVNsZTcIO8YxcDbKU2rvgj6hT/mfbKztxRmRbxaWXFg7WiN5qtdHuJDAiqIPHvcpu+tcWvstLyNE+MKDIHlknHg9fogMbt793ITjWyN5i6zkO/Dq9XwwVQQ3prAgcm75k2xn//oVeYvS/i9pBDNiyIlEAwh0fcEIZZmGBGTeA7DaIHGCEUndIKnyEcKP1L4kcKPFH6k8BNY+GHEDyN+GPHrLe43SMQIFCZp+gsSKRjBCAwiUJqESeJdLvpdkAj/CCT+dgvJ3075A4kfSPxA4m8DiQiZ5zROwyiK0giKpwVOkwmRpl/pVHD6taaMxkhO//mQ+B1LyUx3z572KrciOEHuqmixXXDCNkQB2GVmx94M0rxll/yi9hW8AXJ4u+g98rvWBTy2fpwcxjz9oWrYWObSG7RhPPe8/1H5iUQ4Nv/0n+cwoE4rX8M+CBvZh1pxwWk/ylZgPPh5ZE81ZGo2sh6+gV0LL8tT0c+PDI2A+HVsNVgaJRZyUg/cKfaGGMJPKT+hcZJEfx1IxN32B0YOs+IAQWdPbg4Rd2LivOqzmDyneUIxHRnGngsplYavahEPABWBh+Ydqvl+FDZE2/qwTQlI9OXcbY2y+XycFqeqNYgvVcJmzVcYeGT4sBVcBWCfu3yFYbr4DYmmedYjJCOivpSzmNIYw1iGwtRAa2ad9uqpeyotkTSi6CndfGUK5fvhl5KxiPk79rCzhZWxqDIn7IhWQHsCTz0T93nP0zimRJQeNMPn6FHgtwQa/Ffm+pXsPE5cLN/lG4+yoC0h1R+rrZ2o8/QNl2G7tI/rMc7QFxo1RoVUTyjrI/+W28uQ+acB1vpVF2/IBIWUyfOA0frK9x/ojXoVHuErtBhmD17wYVRySAY0gDF6wp1nmThk35zNybYH9I79k7pJtGvenU2ktPRQ2yOMyh/xLS0aAfB2Z8Cf6AIyiqw2mnQFjQzZbnQTJUSlwjfkMuvujjWYYJBdrBErhcXi4PiqpknT25kkrnwsdaoHWZmnPWftaKRtQVnkzvnvkc1RDmHoXAvEYpisb8YgNLuS3cTmvi8ZOjpUWYl+6hKeo8rOy+0mzRqCEiUMgz/esYEalYl73yLkzYsFRRdWugxXJ5WhGY/vL450V3tIir2S2HBHbmO93qDruQq9Bl1fx+9IU4lcMY4tNFiVVG0YkU3UQCYwMpHRowVXELxpTCJgexOWOsDqHqA/bHJL8PfIJHlT7IxDe522GpHqF8vYH+nNBg3dCfd6mbaD+gaJHOjPvxkkwhQdUyiJ5HCBQFmapjlEQyiOJSlOYhlGFDSWoe9/Dx9I/EDiBxI/kPiBxA8kfiDxA4kfSIS/QSL+FWqI41/FJzgKYzAJ0TSFkTSCo98LiciPQOJvt7f87ZQ/kPhPD9fzfPnbHg9/48ehzIf/8AP6PF/2eMjet//zC/GdCqnHzzTv/qbH8X80yD6Ol7/372/983v54OUHL/+/4CWOIRhaUHQWE1CK5ThOJzSUoBiRFAREoBmeJxCRwcifjpffsS8NJiYCQ7R5N7w9C/UuwQPeIq5OIk/D5KS0QOBW3WZrqvsCIbf1JUaKr8/u2dkZcrfH0WprUghetQgRLt/fNRB6tH+El7Kjii0z9AhM3QWH4oxN4KpF2qF9SFdQqNHUk8lgVmEkY2q2Wl5XCnST0RqQiz4Xr4aGJSyXSdQzPrHU09hunJodvHX8BLxEYBwl4F8GL1fo8QNTkBMRlCCgj9FRJBw8J0IXlDVHo1g8CeQySZtSQg7IJcWp37fFJ5Ql1bX93dmhRFzlHJcYvyYvh8c9fkXZ4sO9DEHPtFqwkLzOHAsaPtgvTUAy/1H5o6AWiPfuzBgTkUXdR1xr1ZAP0bTtgN80/ljcV3BS/GszirSmVUMmcI9py7RKj1tc25bahfV7CrDyTM7xuLthVzAfEnoka/WAT0YwD1L+RPERkTcmdfEUWpIku1bqyZFdiCaF/LasRziWGNUAKG4hKXjspicJzrE2bNqjvjEwyNrqOnHbDM/eH8U6TWF8zhicmXT0xsOIXhBjaMvIYvhx3U4l3ft+7EeHp4anjfthqRV3NxVTkKwOe1PoQwPF+lhXE3///ogCsQGomxs0tGcF1ILNjET0lGKSQ5JV9RsPXi22Bem6UW6ZTnSDQ4yWnJ+OqH0dfyuYnDSO7ca5d7TNFco9vOWImfZGRxFmKx12p57n7SJn7A7ZSHWgYsWpzi3bgDc+i8OmU2SaG4MXyBOC+mJ88bdijPVu7i5LyLmoaaOl67rR4XuF2EowVvwSnGrjPYWY63GiJ0CdsNjChvTKvmZLmPT0BduvMekLr4Sg5clh/siDBbYECdAHjM/bPca9951f16ZtkH9MgFDB+uMao+CuKhx47Bqq98j5gOSXNt4Ni6NF1MyDOvLcZ3uEcmq+r//56HFhgE4r1wJAEhW5VoaHfbvb3XM6zwYF0H/gpXI2vxleZjREfn18hZEpQsYYQiIZEsNZDOcpjqYxTMNf07ToBy8/ePnByw9e/iXxEvvg5QcvP3j5wcv/ipff1qlpHCNpCiGxf4f+jsE4RsIIgVE0TRIEhH+vXqI/opfo76eX6EcvP3r50cuPXv6/9bJIYBhOCIIo0hz9yn3MaJhEvyZsSCShCRQlY4ogCfJP10v0X9dLSg55sc1sQZpeAaK1s8ou8cPNCYTtcMcA8RG27OuocDSOVC2IOqK8QhYmT4Nk0sLR0pHsKnFA/Rej1WA+JFlTjn/YGM3PAhpJRGpfUOlhZNBVXVYRR1QqZKBMngxvEt6v58xm01djtNJaNfm63W6pZpG1FhSvw9xDfj2bGRcrA3Zf6ACN2MLPyk/QS5Kifx293Azt/gM73DVfgiQLS/cVBRCfT4JAxBeBNKU0GY18ohLf41ISpQ+8BlTUeHiglr93uMlgoJ942B0vbQfn+wSoMydRgrsq/tb4pBIYbKkpOYZHpDC4ApwBtwAjCWukpvf58zizu46aQ3x/pmR0f928e+MeWSwEEMSvINdaJLhwqree4+0VjgEtdJS5x6RSvvVr3W/rmtZbghdDqYlsvssa4wUyLpbUbS+IpihWW89oql2xV8w9GJwGma7CilvPv0cffdeKj4wkiYpATURJMfcVPuSDrILE5skIilen3fLnzF+ktW9kQ3VKzxYz39JvPTUMGD97fyihAXB7k81lOw7OBD4vj+6rWRe7gzAPqlT6pew86AQifd96jhGU/p32OMCCB2nanNwNJe18D4KuW6XfadN3uJnm+sDCbyfUFvRLCARgbycUfYSzzLmT9r5+cMPx3UtR7QkO8PoMEmaDTkCZDbCnn1d5n3JfvUN0XAwrHZUzZJdllLoVGPjku89ndKrz5CsjZ0P6LjITvxvUNUzxGDvVDNAWXffiNQlH5HqDPBqHOK3UbXbOw4Pf+pwnRscx/UswZM+fj5s4t6MzgCCaU4bLdi+eVeiTFS72xVTUWEd34/Eo7tl8bcz79xf2TxFfffBuVobONRMsPsGkDR9uNc2BSjpq/UjuBQPnwRMAI+WmeV6JDhZx5fP7r6TcbYJZWuMksosZD+7Ubke1esgUzqHC4lJ6Kt/00l186vfSyyRPUphEiaTA8yROkCJPEIxOkRTJKQqmsIyACYSIP3r50cuPXn708i+pl/i/QR+//Pjlxy8/fvlf/RL98ksUIvCv+Efsa/iSQEiIQmmcRlH0633bd/LlD+Dlb0eXH7j8FeDyXqft3+R4KOPnOvynqzdU/+fWf35PH/P8mOevnVuJEyRBE3gKQxBEEHEOZQhe5EROoDiBknSSojkeY3+2ef7r4pnkg8kgFEfOCrXaKZmiG/UKVzESCPYgu6FqiSivyLpAWXvE9uYJP0FmuJGNPoAJf94OD1lxRobTEtlhkiWUGjCMP+q3EQYLefK8CkijARlZub5iZzBiwSaiICHz4OXIzK76N6OtmFpgwE5+WN6SdczSQLx50E7FqbGhSGbOnAs24gv4iEXxOKHyZ8xrfmUq/zriaQbdD4gn1jAgmMr7DBDcMRJTOxqPvVpdE7/ZKSur0M4Pzw5wMSbKqAMOD0Sj3uLXVuPxXFoHRDY9Mxj0YYEl3vKDoLgt5NRiXBd3I3g0DZjXnizotC/v43J3QcdX3w3ORreR9e0hdaxZMzDU2HcMtrTVWMOX6ZWC9vJNuNG6VCw19iXt3BR0UNooACG/+10oKQTtSCjCFdTz/N7K6LYl0uDkgezHmBLdCS87bgEoeVV9Lx6ABKpuzmZi9Ore4uZJkHR0AgnFXnHSLyikk1aISzE7d9bknrsckUrBGiNMRzfiKZqbS6NHwmPuxb77fRoIFHsRARTdpP3AlQ1i0irpGgqdkqucNUXqiMCHswRMPfgQJazRs0RwzH09pXeI4nznAftqqa0ZEDLX0cgQuh1UjSzwDm/JZ+qpLKk4+gTgJ+GNOINqWyGvcM/9fLzF9zRy3O034pp5e7ci4kaTor6JPAIQVx9I+OrmK6Xd6G05WFiVoyKvXNCxGBl7i2u7TxHveZVnQxdAh5xwMQ36ch83a3sqdaLCswm1qZeltWGpN9hb6kTNGjpf2eidOslvAxg6HA5WmIxPBm73HJvcUEhJIyP12YrEIaaxqVrejitVVnBJn0/3aYPPV/NNzFPAVWGy53dBRKkeG7NUYB8vv63pyTFTtxAuz+dWNIf0JFYJaYE8/jGYHeKWb7FlIWcAjmie9RcQSTdTuJeCfxG6qhEtjc2qNAvfxJOJsez3Ek+YyLGMjEkyxfM=\",\"mIDpnKCKr+lNBM2zGE/RDKXIjMrzj3h+xPMjnh/x/EuK56ff5kOaH9L8K5LmN9AkIQhHKOyrARvDKfwrmpIkUYJGMOT7QBP7ftDEfjfQxD6g+QHND2h+QPOngWZK4xmVZRheQF9FrEQGY0VMpCQZQxQC0TiewUiMFfCfDJrYvw6aU+Ifvck0K2hk3q215UCoWS92jMe5eqaae3V467iFB5kXn638IZmkCz8Bw+Wim9s/mf21jzUi2l4phgfYP8Cafb7+cISTQ++yXeGYTHr94FdnzzbiBBTgviyrSy/OxUqFpiPnE61NpWIeYNrajGW5I9yyeeZz7t03zRrXxBsnOrRE07S9cBtPhdZPAU0a+2VAc+d6/vtBcw6HAwT95+EdKWQW3V56zXatvu6ot1KfEDGz7841Hr42CKhAaWN24N17n/cOu+CNPuwG5iueVlJ4qzWCadfgxp5hwtCJg0ItTw5TGGKR6avGbIHobuR5yL/TM59QpTPZq5mNXGVb8WatxHK2Qi2iD6dfnvtGmKEu2+61N4XUPZ3nAqHaaWI36nw/fhA04ZWYu0Sv+Bbr3AW6k5N2uioHRB5vKWxBqr5jBekTbpZqV/c4OcDUytlwel/DRNdv9L5yFPB6lQbSwO5BgZGfump87Wc3WGish69kCUc3NwNBjruraRctMOH2DZqqLhcSPdaRTRgE0g42OJhYOvAvLde0S0p15rg3fHlOHLL7jxDfjnLWtk4vcPqd/plk0IPK1Ox+r3B7NeshqsTy0UBbDMWUZ5FaVolTqqWWZObc0T88xSp9trUle3ynR5YWBXI9QuHP02bL7qV1dWVOuMtCzl18kWEQlYGc8now36sXdJG5FdInOz841q7eheN3aJLB9EJHb7jocpRv9NnSqsWrGGuuiNYZUN14OX+xyeIPGx3zvDpstr49yDeohvi4u+ujTQTFquThPgSXmzPiKWQBgSxpgjlJXKMoaVB1NXp02Xlrj835oDkM8F7gz8NKGi9pA6tBUSHg7t1Ni1ENrp6EggxLxEjHZQpB1156OLIjhBL2YpGvLPbeC/C0bAumEGbPc0wM5lpFDx1Pw+EDr87OtRANKP1HeqZ3gb8ZaGYETaAZhmM4SqVIQRTUVxcPSSd5hscwUiRxnsIY/QHND2h+QPMDmn9F0CQ+oPkBzQ9o/gVBE3uDJkLiJEmjFP3v0N9JFPv6gqRQFMdx5DsLu/EfKezGf7/CbvxT2P1hzQ9rfljzJ7ImDWEZTKRJTKJ4nMQIjGEQVOAFCtMUniBZRtI4VMDxn8ya+Pf0i69DiWBSNRsI3BwoeNkgjrw4h+GSUDPM7MVAZjUKl07ngGFMSl9AiqUtM0MUhMGZCS2SnE9utYtgvGlzJMTXEkWWf9gvfiMrnuWYRiyGuMGKDoLMV8ZXTsHWazXiYYq3GGVRKKMzSukijUkjWOreXvcFfD7Hw0QKqzAApA6ezTO+drYgKwVdtOVnTGrSJIT/MrB5yI7zA7VA+86ABLMrgmV5mO5sPvWSDacIi0NdZiWkGdgHspj3KaChO5anenYkv9XazEsGEiE6bptulb7+GGi2NcqxvzIVWts+t3IWtJy5chtPmOeE44fHLKlgLejxO1lyIWE16dcdrVHmNTn8NXQhw7UqAMACptyeBLVBqxV3vXvRxZ129zy9ya0T+Og7GVLGzbu3Gl31WJMmb0YOH5SXvrqS7Sw0GBYv+UYSmDyHzYY8KkfMSsTCqZGxSqJ4Xz8pQyH7qSWS8/QJUXPP4dUnyCJZkDBn3B4mhrq0M2maXnUG4ja8IoMbQ8mMH8vX8ZPWJ9cZmJ1k7pEuAzumg1O/PoKuf/Bk0+L3gr3zwvOOB1COl0GmVpsUBoXYNe9+c/ue7VMfTQnAaivIjJcJSfFtmGEy3FJ386MHtz3pRWxdw0kinVbzu/BMCnatGOvbbjpIehk4aBCU4aejsyxIS3ea6I9ajQDWKumDD8LN8xAIlg/yaMTlJSP5lLr9e9IWe92tdnfywUgfMXqTOwZSrL53UWyz+seFKAShKSFq1hpVBUp5CFDhcPk+LZBgfssGoHa09qoHSdHHUb9Q/eE5AKhrTFscfsbY0qvdbfu4HNivlbNwVLi3UVJB6uMN4xXCSTx3g4AYLvAb4NQWgT081iXGnFIJHaYf2n3Nxq4+vHkzE41RNnBvr9cOTe/BS2DoZsWiDBLwttwEASEBSgi4z6m7twCMVkO2fIPNvO6ZfxE2v70t+59vfnLqPh+3rxdICIKgX0c9izihkzwnkwyliBjBMJrOEyTFEhqPEQRGaDyn8xj5qOdHPT/q+furJ/JRz+9XT+rf4M/i+gdFPyj6QdH/jKL4t/pxFMdJBEIRmPqqH8dQDIYh5OtzZAShvldF4R9R0d+ufRz/tI9/VPSjoh8V/YkqSqQIlmYYgccJBccFhiBp/LWqSGIkWhRwDqUpjOJk8aer6HeUpZ+puw5IDJN1hUXoQ+qHh3W4QdcG1O7E9SgbapsgMaJtMtsL5gR5qsV2dxeyGHs0cwyYCRLbAGWNFi7W1a7kZ1X9o/11kyN2JWbqMa1oLwggaMHGQtVJPvFz517oXgIYF1lGZjyBplLqd9doeN14OPXIOcbXIjKVkVHzGpAtHrQImRIuxjBfaIWfoqIUTPw6Kqpe5g/sr7tOCQJaMZlA8jCdXZsvJeQCyNqDB3JA9wTPmZxLy8gLxoup9Jihz/Z9lrGYTuluNUVdOK/xzOzH6zmodvL08r4FJgdkGuch6as/3GRTzHA9ePn5+tKWfN3eZeekrkbdc9czFKdwXc3Bi+Lw8BGYEFxpZvoqBVJOTD8Zzl0uYPWu9HXePELUIsm3isaX7o3K3uVJjmBHS4ohmDfabFVTD2xI7ekYE0hPFVZZm1Pw15krcFH6vJp57/11nwnac8bQRwBcu3uhsntOVu8bqi0buVsNNFP7MeoyjqZR5YLOOSPVVYV33Cq+VRFNtYYTHA94PkyaZKo7v8SKyJXmV4qnz5p39RhyqzJhat7VyIsriva54LyPY/je3z9r17a0V3SzmpF7SsGTUF2Dkgyj9gNHKVUAmLVXW5/8VdxhgEn7/XIyC+mmbX/37diSVbK9Mh/XTcCe1bLurzDfYpIlcBZ9JMgldkYgXCng3mZphuxWfcqIvXeg+01l+QEkV2FSEd8mKEPmdCjvbnrlZlkvpa5hP/hGGfZxDmG8ZCJKKYk5WusXSEfT+/xvrNIEcRiPIG6s2h1eeHyOCFmZ6TY8ZZj2jbNJubor2j1R94mHBFGSNv1RtMV7fx3Fj+dyxo2ubzjA6U9ZiEMc4+6PijyjctP6KdND4tJi2Y3zCr6O1c5qO+x32ie//ZUcZ3JDz6lkxQnanytg5Vdo3fWFXhzS4GUo/KaiUDae/41UNC9oBCrSGI8JHE2gNIGyDIOQNMuQDE0RKMdSCMVz5KOiHxX9qOhHRf+aKvrpUv+o6EdFPyr6f6ko/E1FCRIliW9xnjBMYl+b8BSCQF87fPD3uijyIy7625Wp458y9Y+Lflz013TRf+kH9GPa/uOgKn7+d7HUhEwgGsIJGkYRrMALDCbjvCAxnMRwHKVoKo5hHHvvRv65lvrPuttx+J93t0vbk9is8FlFzyEYrgOMDClTt2Sy98pzhLjUrDhQrqHogeEmtxG+i8F+o7N9urotvW8sopRkVQKBf+8YZIt14cX+8YRpN+CCEWcPBETvTiyFSLk+esVeQz7I9y3DFNcqgdcz7IpDKaN4CZBpP3yoCJkSdIWeKcsVvjX2YviDPCNpwZ53c74fyk+wVAQiaOrXsVS9VH+gux2uWYZpNwaEAiFMp8xol7o8kNhAdZcLw6ubyTx/KJK6P09SaPb4qVrvCdGzKjNnHCkDGblRQE8c7OZdekgb7lBrMWs2j3d+onqX3EssplghVIAErS6+hb0nVAeaV5+HU5KPbVOQMA01Z7sRx7DzGtiLK5eUsSXEyHTZr6fF8F+DohXLrSSKSMrbcpXV8qTkpObrBBUduDBbrZ6PBIF4+zEPdXvvLE/dWc1eLRxE5hyQCSxRiaI036vfJNpQIdWJMShfz0At83qN7fAW+9ILOQsdb55DXnGRbdoQ6xFnZtcWeoI9xbvR+m4/4vpA9m5sNZ7wA6vqs93GoSjFFFHkEc0GGdpK4nCm5paL0dNvUU1yOTGLSkF/T7jGYzJf9mqy2oIGWL8dmbJBi9eBpbSoquAMw4rsIFnueOY6OSEMNTERJMTTo/i2aGjtnXPSslY9IbjwwLrXl3JEbO9VN1S7v8pZnS/zbM6OqXFBHu4Xen9a1O1kHP/9/HGYsxGS7dJzEXbUApggWHOWRRLB9gzOZJw1Cy+1SQ2c6XkHoFCzEtcS21LX3s9SwVYA7PAh2hkkdF+51CcXEgEfSLsdk4SbkZ1ZKLdrDJOVI6lzK61u3dj1vSTvX8cjZt8EeLR4vH7kRjWI0L2Sdm5knAchJfepbRdZh1aG7GK4b4W+g4VJZTBTpvh3dAAdxDaw4ckC3tYkEB5oXzy20+ixsuaabiUB5B+WOvs18N/IUikMx1KIyoqCKLKcIBKaJqEEJxMKQqCYIjMsLxACiz+W+rHUj6V+LPXbLR83/bjpx00/bvqXclPkm5uSFA7hGIn+O/R3HEdxGIcQjIZglIS/Z8n+ff7fh6b/eMi/D5ki//uF6AOmHzD9gOkHTH8VMIUwiiJTJMvJrzEhCEHIGEnRJIcILC7ggsJxKqGwnPgzwfTrxfA7uBSGpOSiaPXpXtx65RfcAsLLpcTmctX7sIgBTnLzOCCx4tgvQj0fR5m9MGBNA6xHwkyuw9uFGtGEzYGmMRw8iALB/GFZPI0WIxcUMx0uN2GU9mI6Ld9PRMq2VvphbQW8OmqAEudaKhVjjADGrg2/Jtjm1wfdDoF6E5+MQhCgIbGH3ZRFf3bRnms/gUtJCvt1kkaPB5D9wOgpDjMg6ECOQ6wQSCG9mqy14raaisobAONLvGOlHmYPrqlg2b0h4Wh+qy6CJIK9z7k+7Vharp2qWqiox6M2Uq8eAcpc5agbGW0OUPANpgG4iwB4xhnBM36+7z9ZKCpjt2A3HZh5Fa/sXjV0m9hpocMzejzt7oRUHz+YHfejuYELkH0tGpxVYnq8q3MYbl/jF6KK9/NVPjuD4m/I7aILoaQDO19QXW90kd7DU8RykQd0Qs/usgKQmeB+HY8r6rZLZolO6AMBjHHhCtOh9Ny5UysmQajUC5dFDkYHImPKhiUgUd32iIF9uGtfx5v2daM9L4ktJImp42xrJTWSu1LOGK3xRlkMa71xT8jDJDoklF0PKvjpHX19D99JqxhWxefIq7CtG2X8sH1yaJIQZaEo2kOWHBoXBbfqSOq5aHOMJZxEJ/VhcD1Lcf/H838BAAD//w==\",\"7N1nz9sGly7qH0S8w94+slMkxSax4gAD9t4ptl+/8ciZfYDBnJ3XPs6G4+irjQXRj5gEvnKvdf8//WM6wzyjgQHT5su2NPghxf3LSqdSD6Vp0WD6HipNQnHB2EdwFZkud8Z57sFg+Y6uZkHvPk5i0NBXg+9DFKpR5FfO1hfTuWX2JcIIQN1zfra52ofSJ7Tpc+Deai/Sz6/5ikf4Z/haYz98elbP9kzJhFN9hHnsAinVa3vW7izOiQ5FT+065iShsLWl7bb2ju4GrnS/3A0rtwfFVCTJwUV4TU+LYEDroeIlfXqFHPiPYEaFpI3lgMjDxyHQRqS/3x9dJKmachmo0DXMl/ILShlutnj9mYjRSyyKO/SNS4mSnX4jLk0jjMgoGKMROMrIJIrhHKLyPE+/yvgoGIsShIJgOv1w6YdLP1z64dLfm0u/SPJzcvTjoR8P/Yd56NenfdNQiiJQEkHIr916FKJoCKYxEsYIjMC/T0Phf/2Ah8J/s5Oj//uRPyb6MdGPiX5M9NcxUZLAsohEEQzCcwqjsDiGcpJCIxyDCQzN8wiLIJIikp9sovC/vkNFPXhURlk3gfPFkuRrqHFRldm8YWdVvw0R1QIMLWMeDt+ZfpwdRZUEjNsiGH2ZekzyKSQcrXDPgpdosFaBNfMGUzXzpyHSOwkvG5dxJsWar0h/YrANmJAPbzbFUooi8+QDhAXCHBPrVlhUiz17ylVr1LbHwJEhWd80WgUcUMn6tXzNGNoBWBumzF8RIqVg8tdR0UOmuB8IkVZ1AVJ8z7dxBRKOpHSKoT2dZm47nTaXRzqDpAi3N8armWkBxImCTejdP+TODnJNrmmeQEM8qcIVlMBbN5aE/ZzsgaM7bOVl2QkTTB4QYfncmDHn7ndrad5nPt0He+SG0QZDNHgRnljAximOh3fiQrIrGRg+NDc37loCHO2feR4ZYrLzSRxu8DtEyj8zjX/JmR9rLC48XC1S6rtb0ZpnC22YlXErmA3SjisP+S6sz6WSr16LYqKP1O9Ce8QzcfQ1qcMLWdjihd7ynWB9AACh877huC0cd03SRnrcnEMaK7d3WTgeCaD13iFU9ynelam28nXvgwIamwJ5Pg/LSUcABjkqnpYaN+sHhpwJEDINPeNlbJ+WLC3F/WveTw2qWZdtbun85Usd/ABAbR3yxBJtC/DTqbi9HqCOkkZ6IxewSRmd9hS3Sblb9jU/WAz8KtmM5zz7oAnuse45W249NBdGOQml1c7W3S58mvft1aXbhHDW07LtpWLfqsnF8ggRj4HJBia2NSKKhxbZh9Jybh0f2EbiEYDYwLSqxn3CG3XRQki/EenMPem3SjctmdAHlLQLpwkqmKZ4GVFON1+Q36PTFON0YZ9WmJdQgaisaXoFGI33rUKO9/cvpS7P+Nf9dj/y8bhsFmK2lU0jWk8H8uSvPNCJyc9wlINnbvMgwxqwbOCJHeT8r3kta+xsCECzYUuDzYmdhxKjyx9HJtkVIoyR9keItESK7DdSUZykCBSnoiyOUAqBSDxPMAqF8JxIyJSgsChOaCr5qOhHRT8q+lHRf7aKfiKkHzL9kOk/kkzhPw6SUghM4yiNQV+/jCIkSRIwBKEwhMA0+r1qCv+Imv69TpL+70f+qOlHTT9q+lHTX0dN05xEkgRK4zghsSRLYDpNyCiD6TxK4piMqAQnYDKPf7qawv++miJmzQSDRleFcQagy8vgktLUEiAtKx24Y92F7TB20MM6v/J7ZPfHp2Xk3fOY6gE2qQAjaB28FG1ijFrJHq1Nem7yZ2dMeeWyQxpeUj2wrs7UxT5lGBULep+38dvNL0wVflLqkyg1phIYYOEyJMddAa6rrGUNxx6fQ+NoaJRhJ+c4DW8XBnVd4Wz9FWpKY9Svc8b0SAryB9T0TlsgcDfsUXk9g3iv7RtZBWRH8fbIkrE9Ia8biWiapAX1pHL467p3oPzOYsILb6JRdxy4ZKzkCqAX5pznPeKOhVAC5N5Yz7TcqnNw9JQ83J4g9KukppHP3+omS2kULcPrHjV2Oy8IZCxTIqpuikBINYVcbWHzlnMqSXdRuvInJwl5bK/4oIjvLOuDHVVKvJ6jPBvjEt7leMcaZ2xP2KHCDajoobdyRXMMm03Zk5/EeocbnlWmJXs/f1mn5a6nA1JN112bQ+JWPmggbl4ejeyRa+XTbtyzS5XW6nF1AxzLbS4HbSF25rv1faiRPpVqwPcifYJApKIky3Qx9Rb3vARJ9Z3pHEjjU5IQdqVFJDS3joAGMJvP+HcWclFd7jH6EB/XkoEW5mUQbDWSloVsvPgkpzqEoQRFTdgOjxf8Qi5v3zABibr1/ZZMwYiO+pPiFl6TlbwFOC9sEv7QiccOii9FVSIAVKntZapadgBjVNfX1GrkdpTuOwuKFT1SMXNjbPRqkalhia3Srxh4DqKPkoDGGpOXlDEZDlpqN9cR+ZcgG21OP95nUPXHI7+u5nLhIKsexyt7oZKAWU2tcxTtq94zWHYkDee+VQxMxJz50o3mpm9m96LeZ1CfoUdwIiMQShFQSkBwI3WktMzlIMuEjwqiBatsdh2tdG+vh14UpZmBcX6KjXcW1ZVkP/Us4JYHgJy5fbOXujqEGKojz1d4G/X0jywpIMX+77R6n5JpjCZ4RFMYSeQkkaIkAqMRSmYJgpNJnmEJkkbQR00/avpR04+a/u5q+pWM+rjpx00/bvpx0//mpt9OltIQgaA4RsJfG/kYjsEIAcMIQWMwgcPf6aY/oKZ/OzP9iOlHTD9i+hHTX0pMcwyOYxSLqRSKcYROKTIncSKjcYrMY5pIMywl8Qz76WL673up4a0AgLE3VGTbR9o693NPlnuYEDngrSff6c8+5XcF9ErHfdL1gaT6dKB0PHcNQipHmkmTe1rD48jo+/rAwefUbY8/P1XKTni2GaDD9pgbOy3wZMBIVgN5NLcbCqTM6eOrLEi7uHylTIWV6V+rNSOXApv1Rfb2vPoYUM2UUCvpLliXXh/7ESd/xalSFCKQX8dLz4pXf2D3Xolshqkp3jgYel8exXXaDFGyJ1ilRFMHD/LZP7Oinu5P13ts6nKI9fLeHS9NzavjMrOR3uVshA/UzsP9JLq7BVjdE5oZApvmM34A1uS5baK9G0SwhuX9vrxXoYME3E9teRJKqWfyY5KQTS6Fu7lGsNIOFgrorjU7DDc0uHNKWjAqFFJZDwEV8f3b7nfC+XHc7VO8Vfu2htnkpofkViVMgoR+XRmJkYh98QoXjVIBqg1mxM+6Rpzj/fkXJI6IlvJYFm/bMQzLGtz1GqofRXqhD+QZ4tlaDM4xYj5LP+bO0lNnkcu8blHsfWrTuBmqOQj+vc06gcGeywS8Bly3Ci7Nrx6EORR3R/9mKt1mSHWE51dRwK59s9F37RHmJh21cgVbA/gzDCrn9EaK6X2R45Zt2yu7zBd/L5o9TqUt4eKYKRK1G8KFPN8p1yqAF9ky0I45t9ckcl6vhuZdn6T2RsqaXHAiC1gSaorQSEZVsWM2LrJp7oI3O3nXLu3baMWV562EBTKTgxwNU58nUYH7MrA41XuqKOmvx/OYy54c9Qc6nOl9MWbHfV/+zFq8LJKMFUf6eUMb9WhBihK2FxDFsUfp+13j4boTArxL5YizT4N84V3rqcfSvn/+aiFrA3WbK7F9OVR9FODdndvMIptINCOFUdch15/Eeav9G+yP5EkLVE7QcIFa75Rsjp8A3pL04HP4pqiAsnWJxBPlA0uakFVmYV2+eelwCftv5KUxQsBxGmMZhaFfOApDaZQieJLDX/+ngYoTKs+oNMI+Xvrx0o+Xfrz0t/fSz+79B0Q/IPpPBNEvDsVgGoZwCEbp/4T+g6RRHCFoGKJxmEa/9xIp8iO798jfb/ce+ezef0z0Y6IfE/3FTBTDICpPEJwi0hhLCRKN0hSPEpJG8xRO6AQjSSwioZ99jxT5nt17mQ4sBnsxUnKg3vNkJgiWrxtgKOTIZjeodYWUiM+beV4CSnr+BCueaRz0NCu6KsKL4Luzfs6MQx8F5xVUVnEcW/3Z7j3/4K3k5XjUHZw3eSvrIpagbZku5fm85Yl7wqSLYxzeTc1XirQpAd+VidRUWv8U5513xeYOPUmtTORJ448zV/OVzeX9HP4CFcURGIJ/GRW9oOb1/So6wYgF0tKtwTBUDJaJajyz8vEqTdeiEfhgZ8koEkE3mTHV9d064qZpfhcIaSjtoBiwPsu7ErJPLzb1h7iwutgLkbavXGqGsVlgDw/YprAlXryrR7katZtxvnff5e1iGx/jDq7N/MNkFIAGL88nVpp6tFFrcqtl5A8P4gyfmC2Nx+F7AhPUpeom8zWfZn3WX6zKvpZOE9bb5N7FcqXF0El5RgPQ+Kx2fbwlELYJEU03fKJ0aMWjZ8S8C4D0vsxanWLQSfPCZwbIsSqO2+TtQg3cab9FQfyWgXBsB44+mDJ2AOPNmeqzsJe3Co4XJCTPkplfZQTV/OTcpG3vFC2H4V19huqePFNlfEgcfeySdm/j0RYadZ2m+tvuPabi3D4KVyrH3mGWd6v0nTjfqrVcZxjVW9d+snYSjt7omybQsFYB9I6xxbcxNL/mPf8xAJMdbEy2N0GOPI+5uxKUXkxsWoiin/SgH5gyyAjTTli+uMoROPrU1gBo/XY7gYwjpWH3i4fjDK1d7MkBqTcd0MSFxX2kHaVppDCKntxjXq++4oHNfo29XkVvZJzg0CKc1PRV27gxVTXdiseMnWrNe4ckCfzTveva2I5dladaQNDuUxkMK+hinf32/kXFxqg3HspbYYxz+7aWPifjYL6ZYS685rzw+66fFtLFs25Qeq61w7apDljQ2a/5DYRPK1UKLIHdezFoPh7kVN7ojxzC7riD36c/VJTxrfA3UtGcojOYRlECjeAoITCayJIIzQk6peAcJ+OYgkgsS/KPin5U9KOiHxX9/1bRcmiqNJq/uRf+NrffREqRT7L0A6kfSP1A6n+HVOTbRj6GI/RX++47WYpCEEGTEIIS2Fc1CPU9lAp/f6kT/HcrdYI/pU4fRP0g6gdRfzFEpb/+Yo6nSI6jRJ5BNIlGRApRKEylEU3AKYTROI2i+U9FVPh7Sp2a2+RY0fAgR3bKK+ouIjHH1E2I1VKbr8W0tTfhxozhtqnqU2eU+1VLz/CxsvfIMzm2qs6beKuUB9h2NEQhwuzNIft/XMS3uBsjTZmbrLCH3JJMPWHgobY1UmHnOJaksb8Ef9Rabrd3EGMqVjbxUr18DfVK2ST3ZxQWw2Wziywvs6xn+LE5ruw6p1R8C7T+dELFSfqXIVQo0PIfINQQKxmmJPKJJ449oywjPczT5DlNU+nggTTP3buegXITfPtEDCs2FN59d7hzsGjOlXgJt91tzIcZn2FckSFpz8JRyGW33UN7OIdTvB+Y3x+v9WCom+fo1+3b+dNpXrh2FSkN72TppGi0fbnIoeDkeDv9IPc7fk0wuYBvBtvjHIIA+F3BAgup5uU9r79qLTaS/NWDdH2fk4qzG8MztnxRgQcXisVmhMp9CrjiOuRMPSsiuE7VurnJI3oHMxGdKAHW8gqsx/jjlJ9esDKVyw2ZqrOy/jpJHbLGCO7VO87klIaAE7GBZe6Z9tf8SneiLd8=\",\"kw3axCrliwEiuluwLeZ9t71Ldnlh1uMHVs23iAauthr9AoyJPD0d4H1+lWK32wne52BFoAE03deSBppTxH5TV2yebOb0hIHQFzJ0XbpZQ89+PJep19vUeRMoB0ClukcHLCANmzUb84xNWHPOcGBNa+fHeRr0tBZ6WqMFRdUQbp17PPaNUdXee+nIay0ziYqMuqCYJV+9OyiaA0E7DHtmQrNuZzmdBGUGEDoepswfIO/C1xlw+OJ9zdsP17m5AOm22yj5G8CViEjYTyjGFaHKHq2KZzp7FZV+mY6KyvBM5SPmVVv9eL4J1CIHJ3QaFqNiDqLwDXCY3OuA5YBL9SEpU8jfpbC1ZhRWA7uAUiR4qE95qQpNfr5//mi7uyOhgdyoegt3xFkxGQWZmK7taXrqExX1jVBhLup/p0V8jErxnE4TGEVxFEWpHE0pNIuQPI9IDE+oKM8SMqU/hPoh1A+hfgj1H0mon7Dpx0g/RvqPM1L4W9ETRpAYDcMw+XWzFIchCsIxCCdxmMRp+vuEFP5+If2brd7Dn9X7j5B+hPQjpL+YkEYEBGV5luQpGeVRjEMRQkMZmuAJmScYDmN5HKUUHv9kIf2O1XsUhFItyiQwTeBN1lsBQWAb7FlpXmcJ01hrcYiwum2OsoJVHignZhsHns7xE6cDMU7v5Ig/qZc2ujwINNdjOuAk/jMhlZlWkj3AJPsUuoE6UxgjOCqiwZyANITPJ/UYvbZXwZEYmYotca0mdXDl8S3FvKbApcT0EU6DYaeCwdfYhGlN4keJJvtfIqQoQaO/jpBC8f4DQnraNsMU2VpnNdzxdRvBKjIoZT2XRGYtc4/6LOWF5t6YLZ8JpnIVmU6+Q55+NIXcZt8xA57XuyG9SoG/FaubwYRqoa9o13nMSodnHblMseUELXNF0uylIKvvzy/XbTfiTZPYALHyDANy2+4TmAtXsdPuU9L6/njNNrBEoq+C2knWXddwDlaI3Nf8CzzpzGMB/yiujjJa1VKd+yCirgrmIIGxAftAwssnIxxmixwvaxzjmeAGTT2zfc3PKxiAqFIq8SzGof0E62sIb/a44tbCSMCYKBhBGpppQAYrsQK3XJbRn0gEzsw7JOoVYyzE7AASEJDJnaUrccrufFW5NoJns0EYJyZg/gId5OwGcCqbFgHUkUtR8TvkOnNLKCK3534hQbo7OPW4pjgROTyE3eXYcAN68Ji2zUzuI1uJpChc5d4hjS99fp86NUvjfGZK1d6xO8dONYb4YZ74SHu4I96jrg1CWTJEwlUBDtw9ti5bb3z1kpUweQsljqVGs3Z4Rb1KYfSHEI12Jt/n/rCe4sZCjy7U+PyRjjW/bEioWrAkx6gr80b2Dhkj4YXbOCwg6w48ZR1rVYaSGd7p7LvcgMmNtU87bwZppWwM9yDVDNyzwZw7s1Pv9+8ATebWyrJWBDKqS8lSQt3ap7N/ajSgLO1VLO5d9SjXmc5UR7Bb+QTOxfRpXHiHlIetijPdnMZXuY2G4It4c+nxqZCp8gJv3E3urW9CGiM89hsJKRHlEYTDOAzlREbmdE6ldELmOBHlGEVRUBzRcYyiyEdIP0L6EdKPkP4ThRT9COlHSD9C+g8U0m/r+CQNERgEo9R/Qv9BkBQGkRgJQRhCItR3CSny/RlS5O+WIUU+GdKPkH6E9COkv5iQZhD0tXGPxAgCZTFN4nAWJQlC5hlN5hlJQBARE3j8cxfxke/JkO7izZB23F1Q1V7FFOkgeiNYneqv+8jIsWuUGM9VrjGAMXNZ/hChMqnR4mNMuwrrAaNOQxADL5/ieX4fEC3rGzTY//Q4KUXrfqJLVg4jnJNN6IzqJq6hu86lkio9tmR25IglLkphboX58pRAC4kZ5miEME9ueFLyba7vhFmEZY+5iseNQ6rgovBXCCkN07/OcVJiaaIfKHOi85JhejUSLfhuzFaLd+vzgI1ddmZgMmtmWDn/vsAA59QAY5v64bHDW6isGlsii+Qzu1GSsE4DCtosvX6Jdzx0grPk4ZZhsQ0B54UKMR6LYlaqYSA70Sp4H6csB3kCbmr63Mn4ci4ces6Z5Tc3mIO4zSjGqwtrctZwNSlHnQ+7Z+osfjRW9Al+zZNhk3Ssla5DS7ACtU/nIAQIvumERSWMWlV8aG/CscAi0Ix6Blb2NNj0Sw2e6/u46mrwGB2LUAXWL6aQq1f0vCQU49S+fCW3G23dWlog5+USwaYUhzUlzEejLKPjHsRbCO1ruMl8hPgElBX9ia+Bxq2xB8EXF1T67i5B3t3viJLNfRDOqwWNT8Lv5kfnOl/zJ4CVSgWY8VBBiObD99XN2zsizZGoTqlXgQRcWZPnYnX7ePQXKrAlcM52sNXwu8yIxN3pntweV+9gkATauC1iw8q2/cS0RkWrd0S371bb66PLiUvISTwbP1saA6X9ncGUl9GgrURC2+XJiRIz9ZPQrDYFs6vS9CKDFtxNI6U9CL0CuEY9eYXXtGzlS2e19xkGBNQK6NKrtAAdjEpeD56zXyQ1pzC6i0nexjnL5vFGQw1miF4WWa8Y8nhp1KB3hldRHziMnijHx5twWg/ee9DsZTYvvRMUo/cJgFwLNhv8St4GZyby1AuKG7jOk/R+/6t7rw/IYK+e9GB327iEy33UmcbKSzQQwVpM+zchJbbV/I2ENMljlMa/OpzQFEEyKk5onMApJE7ynCZgBI4xBCLoz3HSj5B+hPQjpP9IIcU+QvoR0o+Q/uOEFPmWISVQFEZoCMWI/4T+A6JoEiMImqIQgqZohPw+IoW/n0j/ZiFS5BMi/RDph0g/RPqLESlF4Uma0RhBQTGSxBmRo3GWEVmGxEgaw2QKQymMEvhPJtLvCJEu2gE4MuXwD1samADLU92xMi8WuMMopwExTeUyEPieXXKwiX6r8XlFgXLwnOJ57onGZFtpfd4QuuOELo3LZQlUsfiTEKk4My9r75aKAAWsl71YDHKOqms431IO05PNRA4agCYJ3pmKIYQFMSizLXQb6TirQgs9gikKiD3qoWYprmS9ItmcDFp/zZo9jdHQr0OkW/cDa/ZDdFkg6KDKIXf13rCGLVaeyfv7Vdb7qNNDG4M1ezg0SspQnhlObCm48J53DxXDYFSlGqzSoGqMqiDgZeYJldyRxCILAzhJgwybmR0VvvgVo7c7dwuYuH/3zQ8p8dSLvT4MfuNlT3NPvSNR0DbvXQs10wqSj7sn40YeDjSZ0XLZyn0XiyYj+8vXfOSXVO3Yea+7s4eA9E05rGO+iYM/AojG91SgV/OoH3GvYm3V33OYzI4Xu9HYt753B+okVsnX9taBQyFSAULe4n4PQgMYQwVBOmxdj0j1ZcsA9Y308bPsoyusR7V89yex3YXkFweAhxxpquf7DKV53GmmtVbQwV3amahSPRivqi68rMISAp9+AMPN2aX3t/y8Jn6KIIBibkLuqxwnpyuc6zi6yM9NWcxQ8vwSW05vThwWC+8yPeM8ZffqRrxDpNoLcPBU6yA58aN2vzOksaf9a2JBoBbUpZWCipmvdLKLTLnupkjXUThF/qjm8/v709lGsfVDM1006EfbsAxHufC+vJ963aGrK+xayrkSPTkXW4oyJfgPkasvdGvCdwh1DCLv6MS1LZK6i8vqVbkX/TwwLprlKSQVkDFC7zGqCkkPHjaL3EYlZVTLtxx491fxpHHOANdexgyEnoPFewml+QVcmN6OgK6/aGZEt/Cw4uL5dCO+H9PCJ/FbpD/f3/+h7cxR2eC9aYFQoXuatlm2T1scGdWAzDrNGr4RaclhzW9EpCiKwGmOpmlMEzQNU1QMZVCCIQhGwhRE0GkaxSmdkh8i/RDph0g/RPpPJFL8Q6QfIv0Q6T+QSOFvRIqhJAxDKP6uuMdwnKBoHKJICkJh5PuIFPl+IkX+bkSKfIj0Q6QfIv0Q6a9FpDlNo2ScJBSKQERGERhNEggMUXFO4wgUx1BGIRgS/2QiRb7jEmkDCEegMxtbBcz0goLx7C6wHA4mLmLCIItc0W/oCjhHWk/z5XpAwc0r/MA7n5XzLgoOzie0MUw92haXTanEGBaYP02R+nLLdZMWCbdRCF7UslRPMx8Pd1N5bMxJjlgK1+ROJvCZWyHF+jPpL1ySaOjZTOT6uGGcyncAYJF5P5zDMWRJbFnQGPwFRErAFPzr7NmT1sP/gRRpqR0M05B0gckGQ7BTgiiNvfIIVaIBEhHkAbS3XmbvaT301jTULo8Lb+LsAmKgw77FtTp4jH5rd42C3OfCEDR7TGiAPHjwSDask9wcFrUZBPiV9sMnd2pvYqSQHe0q+hqLKVkS0srgvkhN7bQzMmUpMY28Aa24J9q3StuC8/Vwq3BDFEMC13dFuywDJKXQRc2MhTDHUDhiN/nJusPWK1Fv9qYLPDbxOCII8tZwDin+tEujZRLq8b7ECSzgHcAWzbfoJTJI4KXEz6rNoYAb1z2qTA5Yt9ZmlnNkjiTmgFtI25xb+oIPvVOksbeSrCkfpUYSO48clJia9st9ELOS2JvO4vLcHq3flkJrEFkrSyuan+TpgMH57ZLn0ojZ8jIBl/L5puoqTIil8mmfJ1F62mY/qEdnihqKYFVuyGX3WIJGXR6Nhm7pO8WqRsCs80rQ3cKkMJSWJQbdiug7g4uriu6vMN7DVB6kw/EwfswTBh67vs6J1ninSMMXynXWxCcyYBchDAaqj/FVpF0JE0XBebeKfh9PPnlGtIBaKZaocCuRxNV1hvIuo5ICVWYY2i6XuIqYR4ium8yi+w3TayoT2Uh5df0amTuwW/OTvhO49NKJBU/B672nX5R3aJGlKkLdPD55saLk1lGtS1z0Dg3EgpVHW0sWaY8GIPOeS5Ow0aRxsc21yPv98Y+wEfkLVMuLJ1cPzrpYBmv99RownxegqPqDSFGakH8jIs3IjMApAkoomoaRmICxFMZSHCfQnMjzDErwJCYj/JMi/RDph0g/RPoh0g+Rfoj0Q6T/ECJF3kSKkSROQ9+6miCIIsmv2giIoNCv36K+z0jR7zdS9O9mpOjHSD9G+jHSj5H+UkYaQwQMQxmc0xCKRmiCQSmcxRGW0ziBYWhCUhRN0VT0k40U/feNtE6efGIgQ3sgDkwfHapsjZ69ai5H7/7lFQYSnmZSGoVQPLobiGzR9DInSKCyguDdM6+wpLbIoS8CHZSgp9W3jEnsfxIjZblpGFh85jOGgcCyRKjNV12XR3yWvW2c2iiuGzdUMj0npmIjPqnWG03DGZbqFufmqIGm/YAuZsNCz2TMZmw+oylY2b/kFikB0xT+6xjp2IDfb6RztpUMM8Sxrs8CUwHcQW5w2+ttZhY4yqX8i8UG9IaGZHryGUqNHnO5byMTNgxCRHhzD3MfMcMZ9pPAbQQcvWIojeQALJhwFAkFYBSwXhzH7Ne9qmvC0fD3LVJP7o/JafUu02C06QBzyw+I6qZ0xlu1Q7yOCYwjSFcyNLB6wl/izjLb4Nu3xH9vyj9N9U5S+c7XJZk2q3cHDJ6p6Cqe8ahe1mEzquNptHDF+4/c6IAlCVf0Sk4DF9uv+VulpStQtUMjkj2I8woVcQYSm7llYJpYzUrMPu1gLDTxxjlxskzV8w4jDmSg6ntePyJAaCVZke61zZkPLob2GDL36jj2W3A=\",\"wZsZ4g9JGkmHl7d09nO1aq98tPv19e5fn9WnJIt+JKavO9fFg3fkEyK3mhfVbHKIrk5Swwbbml/jNdQcSzzju/sc/QfOvefvbenfivGQdzkn9qBYq6S/NwBWILlNzd3Apx3PVITVE7U8gZ1Uz60JBa/FL8v5HcMt6Hmn2BEWEMl7MIdS5Udum1MlqKUEhveIVQEYZ0+r9ZdFDyDbrif5ucJeBb+Nexdug2MjBfSAHndJSEEBhDLPXQWawZsS13n68vlo7WAnvYU+EN5KUKG61Nqo8R0jZZgzl5LoQe4VqFFD6JeBfheGNRy6uQaO2S6k6IYe2cwYrk9Px7mGiYEpFHD/dgvVk42BL+DoQmOke9jkdDOwqEg5aSpJm3IkkUu+GalqT9tvZKRkmnzdIM2oNIIILILzPMuSmKaTr0qCBIKoPCVgjEI/Rvox0o+Rfoz0n2ik5MdIP0b6MdJ/oJGibyPFKRimUBj62rSHCRxGSIiivxJIBPI+QfRvEyn6/cdI0b/bMVL0c4z0Q6T/dCJto1eflL+Tkv7f1MwEgbE0ixOchkmIoCIKR3A6zZAkxVGIyIkUQqAIJ+ifqpno/3w3FP8fNXOefakNloYO4Tpz5bIaI1OnHn7g12RjPaHLZqYiPYWzB/qwmsuZXCAn7SX1upDH2LfxtAsiNl8ofOwPlWYj1LKbP1uKZ3JJo1liViS9B6uDdFfHUePX1uuJJvoRPwcPUYdq73rWTMVQ/GMRxNE20HMizR3CFOyRvfqdl04RqS52bawSf22vivprNJOCSerX0czjfv+BZiUjYBmmkSz9NeSBUA/W+pxetESQwtOK5MHm6i5QY2BFhJtKYGaFDi/kjUNFEJQsIS9706xioUdPjFeCsGD5yknCDkKE8rEH1Njo/bnp+5rdFQ+IgA2gyST7mpdGOIUeC7fs8hwwi9kkGiTlwM3vEjNR73KL1Ex0O1vIoOYaj2YFU9FbQSYOKL4/3zrSEKyxs55UIir47gVwOeBZOTSFOwVB0t7wSwYXbIqvMcSNYjNSsPRUnERN34nB6spDIvcNj7WG5YXiyfhEuQcsV2Al4/LZQzl5EYvgSzeWp1UmTTFY1gdqffL1e6keoKEHCPX8gQhsDChceD0r4GjOcnSgFDqk4kRoNBnV5aHT3tTl7q5yFTG/xhvDvDXRJtymy5cl3+tgCTz3kmnN9TmHF6hHkDxefRw17DkzfFL1r5C+V6QHDbDst9G7u34WZCE9ObCLjdusG/RLhW/Mhq+lb+aQYoAQstuo6vOFxSVjwgcPxu4yAmGm1nxrqCMq+1Q9oGBEX7g+v7hDoJ54As2cYQGALPNbtjEd2OgJMgF3gIaOqBSxMNmE5X33NExIb01jbjOxmoLcOOoHEeL3gON9WXwyXXIGbHiLnROAOd2hwyk37bslhnZUvouOVN+g55sE0+0YoVco0a/quENljLCSwsl1Y3DRek/8gVtDjlWqLFduQbrb8gOjqa/50hwci/USXRQmpdjNmNL859PUH2a8nBY96OHyTTN7Zhh+smb+v//t+78DmsR/K1ei0yRLohzDUzrOkTxJcQrCcSJL0TjOEQxBIRpNMfgDmh/Q/IDmBzS//cr7Rd2yP5TqG7L8s5CT+iDnT0XOP34jX77+5Tu/yQuG//iWPgD6AdC/A4Cif5waJWAEJTD8vUdPohRJ0zRKEyiJwSj9ff4J/+sHBPRr6G9moN8e+aOgHwX9KOhHQX9IQSGYJlOYTPKvS24UnMQwncQRQdMEBKVIRFExihIElf1kBYX/9R0OKr3U6d6AEsgZkDLHHu/uZvt4icq0IpAZmM6dmi2/w+5evGFJzQ9+lBrHCB25AkIQrpfYQ4eBR9F19eKgnk4ckdT+aX8Sl0rtysrOHWRZVtzk8KqEOYxFiiP6fud4q4bqqajP5wDvtyLOo1okjIOfnzQO04BeAlqbUZEPLHpslaW2tz6d7RtE3P4SB0Vo+JdxUNBYHz+Q6uTIHQQfoSG5GkJDnUWvDC0Gc7zEFOhAwYSAeqogZ/+S1RaMziwHvOC9+W3EyCwqHKTCPfNEdu5MkXDSurvkMN151samz3p640yOi2KkabIhFllSu6bQcd6pPAtY5MsPCL+4c5F3+MStOqkho5wj4y+YJgTHpvYoOaHFP3sG6BZwTmpAseeCezti2zf3sbaeuoUMadJKVro5fAFfiJVcx9WOaHle7ZYmor/VBrWbrJeS6MMZ+It6Pz9bmwYdsueSjSGIvXozEsP1CZYOANdpdhH1/XELMYFUjvWEcvLgRsyPJL7kIPrdX2SULYFqN87nvoKq8iK86oYFABtwccNt3LvsqbF59ANeurgA6vccgA609ikgc7n399c+2FLSCfx+IumDFo/jLj4hBQBldm/jl/8oSlpAB5VRQHrObwGwjUM3L9OuDO9blw/nqT8ZlUbp05HzIFLAeGcl7CGERU1A3KBdZDKuQHHywEC1El70pCZGfWRG8f41/ypbz92eSM6COg/C561W7T6LNEByQ5sa0DDyFBVYqSyzXlzSALP9ZMDqHAuqfzs2PjthYlo1fT/qXYEx1oKV7hW2RziNUlUbMYJKXUmpNdqvCjfS8jLf7lPWHbT5foeH4pbKkCvHTEWRt+MIfLn1ZQW+AwDsa/zI8sdei87k0uVQzo8BN/ibmoSxVaaP9+c/OfJxeVjEkSlzN4VKUouLMHVjMUNvKuQX90fD/L3Py9/LQZEoIWkioUk8wfKUwkmMiDICgxDs64JKRKZ0hlAx9HHQj4N+HPR/clDqb+Wg6MdB/3oH/faXJfHrn8Zvr60tMPxd+I/uDy34IOkHST9I+o9DUvhfbyYlcZgmaIr4Y5ceQ0gMgjAIonCUwCH0e6EU/hEo/ZvVMv3XI3+g9AOlHyj9QOmP1cynJAzFCRpHGZrmeIzRcZRCMYbmcYTiEJJiKUSiKfbToRT+96GURx3FVfr9Wl+FB1K3V4h6JKbEjTLV9ss2TQ+VTKAtOs13Gy3OzqO42SBmn4vfy75QrMaGOubuB11Z18PidRFS93+2/i7wnT0/pNNmF5MdzMf0WB8AroFV477SC5jWzcyAHkKi82QqBrOQkkOKYgUYWK2xIcUa2FYVbkN3TSgMYAvNFRnZYr/+khYlgobRX6ZovpHoqPiBFiXV3kEwxE1T91Y5FdKtpx0uGmOiUYjT7N0uuQpHKpD2lXdIld9lU7Tf8zejJ1/TThnCfFcd1rwHgz9uWaw7O01D6Csb+VuNKiiEetY9VMz4gS6GHLWN4L1PVKpyD985PTMQCJhlgc1bVArOF+c1UrXcFQ6SGd4siK7DrDHnrtElqdroGn7dyOMNnWe0av1EivgFEB1rbzyDPiJ8Ha0oJ9itmINTFyGsvARFlawQoQiEa2Z2dcL7e956TKioy+o0W5i+k317k0iiFlwYJnnKnYOWAa2YngvBilLOiy4CA61XB6dPgnuvv5+ifS/NuJzQC1YRf+Zuk3M6BB8R6kzh2nCTTbVHnq8QK0TFrhUB6/OY2GoAT96BSTGUXgwV52YEu4KpeTcFOZ2Oo8pmlnJLFEKPzmDUAOs7gNnLns2brJAsKxICfn3N54BBEqUga8hDHzYHNjT9cRuwta9vs6VPsrJZBV0Ce3ihrySPEN0yj7s6vXRQf39+JCYlFyiv3JG1LGNtd8X2R05rpRiWe5YGgjQiXn14FNOl9wUhy2EBNVl+Hj0HvJ9/MusLFh5rEsy0/yJcEuAxqSjMIsfmg2ObLah8a7qexCofB7fWJy6pr4ZY0PSd3wxFUsjbJDuTKNPFAWxEfohm+dlUNUYnXUYxQdA807vdqSwTxIpZMiKJ37rVT95F95w+1Ipzhcl8la6gkURDoStY7AuZu5wi2LGNfYPSiE7n3wtK4SyFaByJCJpA8wTJESJJowin8gTHMSyBEpwgYir+bMB/oPQDpR8o/UDpH1BK/wv6UOmHSj9U+qHS76HSdzMTjWMEBBMoTf8n9B80SsIYTFMISaMIjeDfC6XIj0Dp36yc6b8e+QOlHyj9QOkHSn8IShGSIGmIQkgUxiI4zmgaSSE8xTMSh1CUxqIIwREUj386lCL/PpSq4SXUl7R5p8LYkRPo+ei6OrHSCnjXOwuKIsmVmy2APMxIWtyqWQl0EoBEbicNv9LdCAGBU0a6fUTHOhaDresrVvxJopSbad/cYD1ehYf37HioPuXmpoIbyp9b+4rEuoQS9yVxls5UArMn9lO6x4LCYxiduI/5aWZ4avsBUqSDeQiNtkcEmZoNf/9LoBShsV8GSm9NOv3AZj2A7SAYmGUV6L7GKwjXHuBcbsXVOYl2w3qVOcBnFeGCFBKdEiNVOF3rezNerV/XcR7cQ+/p3J+yiVvySz4XlK+Sx2hX1c4BzlZZMDod5SS7UugX6rRUa/b+M0zj/ChwxbyRzk4wQRqglxBNiXFTTP4RHMKVvhI46IB0LFjjUlEgn1qQHByBTt93QrOnovjEDEEY+Er45OlWmSQaK2PgYQakC18fiWQ2wZGXL21uykM0MnlY7ii4Z+9EqbzQ1r1nQXAiuXVQ0nuDGyjLVh3KJG6G8yB+4WqVVYNoGy1Jis4UlM6FV0/79oZeWldg/e7XVsHgIzcxCj2iczlvN2/FMiZNs8TYkEqmHEaR3Zb2OIeRSo+w/cyy3t+ysbinQcCbbs246vlKfVzHcC4hB8tA9+Dw9D70c2HgtAcUcplqWdWotnCTeeYNjZJ00oWcgLvQBaWtSD20NgQcbOfGR69uf8255ytLUdvLMtYRaAg4juyMMqd6+q4WYv14gfkqSuzUJ8JwOLbblmLFyuBF+gSlyHWECx0aeLVmTTcq09fwK9tbqlSd4A3Nl72LR3/PjOOMKRFoX2dGNwYTm/tt5J2UVBYZu9U1evK6w8eIyt1SakLZJ1a9E63adJApz1YXxlV5VJAYl6BzP9VP8GVXzxyVDITcGg/KOSScSaalJDlmd0m938Y39LZnhnJJAfLP3l7itLCy9Rlr0tHBlImZHrrf9m9QSilU9XtBKUUkZIRDCJlAaILlRJYgVJwhOUTHSE5EOIWlJJLk9AdKP1D6gdIPlH6g9L+gFP5A6QdKP1D6gdLvgdJ3PxNNExQM4TT2Xr1HYJQgEJgmcRiHcex7oRT9ESj9mzU0/dcjf6D0A6UfKP1A6Y8dIE2IPELpDKFjJPlavCcpiERxDMqSCKcRLCYRDILi5KdD6f9YqET+j1AKBGc6ZCXtHcCYPTPixsLqy1ah29BP4dyjfRFvodAxI0QAa5FSvI7446XBMWm8roh8XcQVD2DnPKRbYXtC6XBnVf4fE6XBV+l8D0thuYiPXfEJidis4EaOgce54Io9jfE46gZjxJkMAs66lYxRpnXq9UMfYQmuK24uivDLNKi7FKspGY7gw8ZY0n9tBPnToRSFcIz6ZUrnG7OU+B+AUklhQIJpqfahG8mcsLlXonrknRBxdPpToRN2dY5Jmpp51ugzXy0/i6aveZCgsU2X8WtpDBUN5/xJzq2ds54R53ZBxw9GeAInaolbnLShmtvlq3/dTIKDinciE9Rj6G4dR2AXllFvUR2psHlRE4uJdgyGDdMr5sbXIeRz/YPh3KIg5gYCS0Oh34U8GP9wn7L3pJXjBta22tt3aKQ=\",\"lZL2OkJYV+0UH+lDGHwtl1PJqV6IrE8spmSMEryhcCEiPqrXW5CiwPBEJMTDlNeuyXawow0laNkA+kzSbJh9LPXlJWC9EKAk5GW+4m8oXOyloWzaCHFUq03m7p+erVi6z6gIvSx1v2AYtshahFDiKm5TvzquVmGqM5jJ1/xx0rCzQdprq5fG0VpZtmwWiV3BOQBXpnT2mG6w6nMx6UAC1wIOPGKoKBOvgJPepfU4BtApwj+gVyFliQZkaaDOElNwB915ebNGk9c8EEZnTU/nKhyY11KOfUzAoPfpAsw4QaGt1seQSJtr+PEZb0MYEgIiTuWh3SM4FEPVLtPRsEuwZX17CYXSrcEn8v78LgTXlEYWCorQRkG1ViI7mUrvibjlD2l/pMaqsE6bnWR6KJiYCIFJD7jZ3eX8XcjUKzg2EkiCgLROwJCY6k8WIkPC1qDJC16sfyuyMxcCRD1fr9e+8Bh6Fzaf7KIH+j49IJhGUg7rU5mZzGjrwpQuv/fxPM+3WynUvvFH6TxFsujvBaU4jtBZRKDQ171RIo+ynIAiAsEiEoa+zmfBcI4lEEZ+oPQDpR8o/UDp/28o/W/W9Y03fhs9RT96+tHTj55+9PR79PSruemrgoJGYYzE0C89xREaoxGYIBGMpGnqe/UU+xE9xf5+eop99PSjpx89/ejpj+ppSsAwiid0TCARRhNolEQ5TaZ0lGEYRWFQDJMUFEM/X0+xf19P9yRiZYnHfdDE4VZ9IApvPF5KQ68wsasODD87YnzlOKw5CyBGUq7a1UtLHxkGcxAvKCd9eJlNic1CWHDRVQVvVMif7ePLB7k41YwXq+ep+EZw25xzOMMkA0fWa+Hm0XXRdVSzN5OpWMMTQMLgrrmEaZPtT8IFRguaY38IEY8gOWMhD7SZm8eL+Qv28VEIJ7Bf5nBpYwUv4/v1dGwVCwQtpWl9y8GyxokALMZUzFOnHJ9Wn6jrQnGBQuKzktjxCldNGn/r6TEWz6r1X5Yyyoyr9GwERqFOIaPZxyvTduM2+oKhUNh6NY5U5rpoZR46aUW7eu+YY4iZ+3kvSX7kyTQ5DlUiUoGILzyJNlHoBnax9DqmwYP3/DgMcyauhKYY9fvx1te9BmRrfJW+7Aiz9XqW4BCf5EUUyUy30kO5dF9KC3QNId7bWRC4IEBVqjq7t1P6NW/ulYGAVaColE9NaiwIRNcy49Lqe0GzJKf4+EhhxyWFxZjBg7Q9nl6PbEn0Et8x0RDpYIjGb4M3jezNeqV8z9dAUhyxpFGajcsvOEPMuH9da6LAq5MDqAfrTjg25vvnZ7AJqFkXUzfos47pKJQue5DXO1v48yGZ2q606mtM9wEKhnH36WrSU2aiH3hMvguoWMfN0Nr3y1pHktpUqFwZU7rK7DMcwfxlX4JsMLJcR5lSly26rL0w+q8bw1c2/zXfbOOWA3tYMjDWAlrfIZmZqmCX+Rb7kPAB5eSRDlkNDGDEKq8UK7nIW2Eeoo73n1+aUnRQvWIx17tb3EwDPqBRaIQbADUBseeT5wgrPSRbL/iMEr1mNVyl0rlPoNq99bY5kaFwsASjzwPryABpRZUUpRDApf/F3p3sqK6dUQB+IJTD7pshYPrW9DCJvDtjwJi+e/qIOsngJufeOpCqAcmeIiF5hMynf63Fs8b+jNLg2KqaxfJ2qw4WlX0/mZzSsFpI4o8z1+LBqHa0I81klw8uDaJAYxVPgiS7J/X7YF4TGPzU03Qncv9jeoqtFJIiLCOBkOJacGGlFUgo5ggRlightQBeT72eej31eur19C/1lHg99Xrq9dTr6TN6Sh56igDkkDGAweNjDuVj7p4iQBF+fvaJvqKn9P30lHo99Xrq9dTr6at6SiGOjDEWEGy00wBTxHkklIQ2gtIZRyOgmJFfrqf0P/WUAPhrPZU2PqttazZQh3BYM9dL3MurxnYK26Pp1UzpsJib71flK53Rm7S6txytkzQsFA6nXnda3R+2uSxY88lul4wRWpRNnewHn4X0i8kyG13kNZz2z/X8Wq5CRJ12fIxnZh4PcLzpb7Uk5SHUj5D+Mtm0Uec828RRYbEdg3JHVvLl2jWQBSrVrqA3i+a6VtiJ4jeE9CmgHLL3MRfgjNQEQWyw0kpgYDHVQiESKUGVRgZHTFLLvLl4c/Hm4s3Fm8tfmgv15uLNxZuLN5dnzIU+zIVgDCCDHD0u1iiCDHBCASVS8Ocv1tgr5sLez1yYNxdvLt5cvLm8PLUdaQWNFlgQirSjzmJEEOSARUBQIDCWlBBIv9xc2O+bCwDnVS3J7cGgJRssVKX7vep2lJN1vzKNC4OG3J7kOD/IjF2rHV3fms1rWecPe5FWWv17IWar3iIJ6pfBrZiCTlBMKvH006ntYF4YSzyyt7yYjJZTFeVLrWlSqc87oDy7FmN3CnpdshxMWDmux90RLPTP6/M6PoaTPJ5vNHXgiFZpYZR0h6tKWm70Sw0HZi3xDeYCESbonQZ6rYDERsgBKDR3ErIIOYaVggQDK5hQWgNtvbl4c/Hm4s3Fm4s3F28u3ly8uXydubCf5kKhwBz+vHORUnImAQYCIY44exZd+Cvowt8PXbhHF48uHl08uryKLpgroay0IJIREQpDII1QEZNaWOaQUpprBDj/cnThv48udmrtxu7Llty0nrXyuV2rr+ig3kxKMJijIy4shumh0MqPrzmyrQ8aRafLOwBO6bobL/KFXT458F4zv2yp5ahGlo1lea3jT0vWaK53OMwtpJUsxXNRum1a/XY9KOoeXVVv0ymu0yOrDruEPUrWmik/lRuzczhOrrO0tC71bv2cUWmjXWuNupKoeJaMbqvhhgXfgC6EM/w+6MKdQibiEY8cYgAaghFC2CChASCGQaAIAAgZjy4eXTy6eHTx6PKX6MI8unh08eji0eUZdOEf6PJY/Hzctj8OXR5tExQQDACTkD995yJeIRfxfuQiPLl4cvHk4snlVXJRlGtgiLBSY2ktkgzYSGogZMQMJTqKGDPM2S8nF/H75MJbZ1nq6oVU0xqpsEttJgdww9MLDCebvogcbtXWo0kOHA3enKrXQYVsEAvqQQQ6xew4LvVu6tg+HHLzDpier4MzGudXnzUzlWm4oAuXG485rmTjZHVdXGUlLtnJbbs6zsvofKPBedq3R1BICp2zUgR1h0NXqO3a9/7aUbBLBw22Xc6j8KRnrUJxwJtHegm/oZmJUsqIfCNyIRBQxLUlkYsix4UkQkYYAk2UhEIALu2jGtuTiycXTy6eXDy5/CW5cE8unlw8uXhyeYZcxAe5MAI4I4iKjz4XAiUWAAL04S7PmAv5Af8GnjWXn196K3P51yN7c/Hm4s3Fm8tL5iKtkRrhiHBNgYAAMUaFoyJyGkZGM06cgYR8bZ/Lxy/X75tLSi5oXh9cN73F5gREp5Vvzq6RPsS5+rBwzE9HKL1OBq1beO6iFKZxm17KrSPPt0bZnRTHaWW8C9NTM7tSs7NtOSqz2oF9Zi6VjIPNucwGfJbF6Niv3uZqMsw25X4kK71VZ75srMFtLfQyKSSFU3FYrVTVunrJzHiRXZUpFXmrrNH+0i/tNno3mAW5YX5s0LeYC0eY8/cxFxgJKJRwWiCnLMSSQkORpJY6aDCVimIobRR5c/Hm4s3lD+Yif9CPN/q3EBfxA7KPPxNeXL5HXOQP6L3Fe4v3Fu8tv+stH+/eH97CoUAIYs7/Dn5IAbkEEkkspHjaW9Dz2oLezVqQlxYvLV5avLS83OKCjUYcSy4thcJpahkWTDtLrUIQccqhgVrxL5YW9PvOsspVg/HkoHKF4izejLrbWu80yG+680HYqizXnV7UIR01zB/5nG0Hm3kpvreXQZofHmNBh80V2mBRsXBR1nsxC209o9Xu6PJpnKiYVntprRCpbIOr0bXZue2TtFQegsNRDPpMj88iPylFQBwv9UWhl5mSYeO7KLTG52Hj0u8CHQ9Yv5CJPM2Tc7/bL6/77VZOLL7DWQgF7+MsSlOqlHLGwshhbAAgQlHCGbAUSBRxKpFyUnpn8c7incU7i3eWl5zFU4qnFE8p/4+Ugv4JKRIiSBB7zLhDzAQmkDPEEcTwOUjBz0MKfjdIwR5SPKR4SPGQ8jKkMOSsIYjCiGIsjVbWcmQxEAxBTFiknSRW2y+GFPwrSMG/hJS9HdOlSibjbNg5JcERp9UqasnZMTSzHN9NJ+pWmEOUv+yz7X3XUElc7svw3rGL3CLAmciWPQOzhuYxw+m2truNbw1T+KQMN9jmRGldbZ8IbTdLRDteO02Ox3g0baCl65XK7eN0vqLxYnd9DBDd11NTu+1u82F1NuKNjl7gSr20GaQGTZNufzu8dHaX4b3P+pdvOFgRlDD6PpAiNImIFhZRCAAXljpuIQHWRhRICSXADkDMfC+LhxQPKR5SPKT8OaQgDykeUjykeEj5A6TgB6RQQNBDUjj5O/hBOJcCEYQIk5jxJy9SyCsJIPJ+CSDiE0CeUzyneE75LxJAmkOBrSNSQBBh55zVTjzmdAkREaASSkyM1V/MKeTXCaBfg0pQ2xzTWFcaWp3vk+boSleTUr0D2WodnKe60t6EQx3uu+G6MKYLhAUPg/mklsWloHKwwSTtweHwtANbprNOo3TcXtFtFX4CKqVLgaLeEJ9v/V4PzzN9atLFYLNml+lmHGpxrtJB1l0U48vyA1Su7fTQuE6UGIs0lz8Nbvnpolk6N01x0DwEYZy7kpM7XLOb+BZQoVy8D6g4SEUkHEEKM2OpoBFyXCCOMY4Icg4xbLARxIOKBxUPKh5UPKi8BCo+AeS1xWuL15Z/0xbyMwFEsUBUSCboo+RWCAApAAiyxzG64M+CC3wFXOD7gQv04OLBxYOLB5dXwYVi4jRFmFhrTGQxZUZYLayDJAIYGBsp7pD+enCBvw8uk+EmlRVdnYH7NutfRmsr8pOrPN4Z3s2X56rus/FU7tomw+eaDRtBc1gaV5rH0U6b5NhazXKHnS7xWTRRKtWt9eWwyYLP55yPLRqgJERtdIIL3klgFFT73VC3F4vw2siUKYWqAlnxosJ6HJh7uO/W2pPF0mxu3c78stFV1s5ZDU9JqcNWLTdbTo4gmcffAi5MvFHNLYsYdIw6pjUEEkMMWESBcQhCToEAjgGlHXIeXDy4eHDx4OLBxYOLBxcPLh5cvgZc4Ae4EAAAIuznlDNDSAIuIeeAACme9Rb0ire8Xe3Kz0f23uK9xXuL95aXvIUDyRkhBD/axLmQWmMJlWGIICqFNVBCjYD4M2/5BwAAAP//\",\"7N3nbipJAobhC0IzVA4/G2hyDk34M6rQ1eRMN3D1K3xm5oxWR7KN7NlFqgtAKskCzKPq733eW9AnLrjsabV4KTPVnAbj5b0/qGynh8yYwao6Hc3aaDMQeLdXfHAMoiFvXRvxbnwNU1eo52d7dOie7WFcmYy2otMylWRS45Ny1ni/5Mzg9pgumxI3ByNpZ7mOm+IwuOVqN9kdlXlKeTmv+pbl8GN6pR7FQ4VEfETFWzRIUTV3SDuF8mUy2jds72YPRoygcZtpefYd3iLAC02vGOpMrKhlkmFNNQQGGWII59o5ajjHgjHrEPLe4r3Fe4v3Fu8t3lu8t3hv8d7yNd6CfngLQ1gghOVj4pZyghmjDDFAJf2stzyhLS9nLV5avLR4afHS8qy0GCWYdJQQShRWIo4RIYIbpCziBhtqGLRYvn2lf6m0fNxZXCmN5aZdaG6z5dJ2TjIxwRhtk+K9mYyBw7g6io5pVepzfdQYBze2nkG6E+Vp3U15BDrrfCT2fJucQFieGXLN3RnKgnedxQF5CMtmm4v0Wg47/dq10O6l5yla34Lq7bwq9ipObEad5ejhLM2q67gkLt4bneZyNsiqqMJqKrfsTa5zPhemuSxXyQ7YVm/7Hc4i5Qs5ixKQEcOEg0gDDSWBWEOggUMMCM2hYVqqmGPvLN5ZvLN4Z/HO4pdZPKV4SvGU8lFK+RNSCEBQ4EebGUICJUKcAMg4FfKTG7f085JCX01SqJcULyleUrykPC8pWBsbM2QVlwAAjomJY+uYUUJIoYHRSluLvlhS6MclJbdfndxaNkqZuzTYtZyoS/9Cw0o2XRbpdsjVqnY55QXqOLu/UBgmDqer6jxe8WFngmdLnXeX7vS87lqDJ61GsDznlEreiTJXgtiCbUflj7wp+r3+qK8HeNgrlelhc942i321BrN62KvPpsGioFPp2m46aJUmzdJlfVtvArc6rXfzwnLHWL+zrG/radg9IvktUWbBICcv9IQQRxQaiJBWhCNhCARGOYA50Ijg2FJjLCEAeEnxkuIlxUuKlxQvKV5SvKR4SfmgpNA3SaGcIcQRgH+A34UQjAHGMZD8Mb/yYUh5eyd9cnHlr9e8DqX8PLG3FG8p3lK8pTxlKUjHWiOpndKYxJoDRg2RRiIHDeM0VkIxaij5Okv584PrF5gC0S8xxeyiyUVYHu9yhzXdyjWvjEu3MUtRRsvzioHB0m05odli4ZJxA96mzcEtzEa4ykMA4jPYZlC3imdhuu1lO4n0alXn786tFC/dSyEGKo2DzaLVByzMBWQxqFXDaBzFZZAb7pNG57qfzPZZLRm19WmHLvVauX1eu2xUTftuUT0tR1F63oAgDhdZrto4mmlp+vWYwihi7IX2bbXVShkrNaHo7XkzA5wmzMZGyNhJKAznUuL/2b7t18CDV5dvU5ev/QN5nvE843nm7x9BxD9R5PHG443Hmw/hzZ//zT/0hgnKMEGU4UfqWVICoWQQYIQlpZ/UG/SE3rzSfMvPE3u98Xrj9cbrzXO1Z8S1EwgYLN2jvWuBEo4ahhgGWkhjJRXGGfTVeoM+rjeZztlTEs9Kxd5NZUfR2E1LRzYtFPfZbejI8MpKYj7a5Xm2OE/248FeT8B8bCVdHQjd7NlutV1t03F1Ixu0trBJ81raRO+OtxSv3SCfDM+F3Dg/POP1vj9utDvzSm0BZVc0zsJkw07eVe5m3qvNg9p027KcXsNbPCwnYz5slY+TWeUasjpOu7dqOskG505ci+ar79Abzl8o94yxQ49VZoY4iIHWzhLKmNCSACyptlBKoI1FXm+83ni98Xrj9cbrjdcbrzdeb/5f9Qb9rTdCIvmY34WAy8fsroRQUAqk/CTf4Cf4Br8c32DPN55vPN94vnmWbzC3ygEtHabGUhsjEcdcUamxcpIqoATCUiL21XyDP843dAtq+5K+1Haz1Ua3RsvDpF8d5OEkfxrkt7lgmMfLWz5eD8OlG7SxXBxKoCZXUXmc5iEw8+5wB4RgxVJUX7WvLpPlS33wfuuoEhZJOlp1J7rdvi0Iy9eyoM2H0QzMdMMtGpcy573qblaaB7VkFJUnaeMCxvtsyYrdStBIolaz1Gpcz9O2LREOgGxsrbvvk2+5fCMEeqG4tGVIWEAJYxTYmAEoECIxBxwqpSkwWlhDkPV84/nG843nG883nm8833i+8Xzz/8o3+C++IZxIwv8AvwOMJGMQY4QZY0iwz16/IU/4zSst+v48sfcb7zfeb7zfPDdEA0gMqZOWGseoJgIxzQzSwAlqITYUc66MUl/tN+TjfpNb3IPldtSprc99qZbDPjnPIr0+ZqrDWRzVDy7uJGIxnFwHsza6HgorxDBLd+V2mLV4rdN0hbvKclmAoE1b4WjuDoNV8u7DU91ci01XwRH1ljlBRk2+u/a6u9vsfLrc+ZibUWl5Hi5DDF1SS8IdNXbaC0GhaYuLiKjOoZjWDiPUP0WH1WBT7YNwva4n7WLrO/yGAfRCm76cOc0BpwgSAgUU1CGlqeEKGa6ZMgITK6il3m+833i/8X7j/ebf9Bvq/cb7jfcb7zef8Bvyw28kJYBR9pi+gY+rOBQJzDinglD8Sb6hT/DNK80I/zyx5xvPN55vPN88d/1GOwyZ5IgZjiWmTmBnbewgwpRw7aiQMY+h+Wq++dWQMPo137QaQThHvarbDQuX4ww2W93t/rbcnfv4Ngbd2jBCJhigZfMebtSVt4e007p0q/C+anQsb5pcFEw3RI8769J23bnLjh3g8vvbN6ODmJen01wjX7ru970YjPN8eZ01iDyLaci3pwHO7/eLW/HeqyWtTZCtcZRappq33LV5ae+MtIkZsxCCzqiSG9xt4R6MQP30DXzDJcIvdP1GIYCpAxIApo3QxjnLMYwxkgYjaimUhCNFgecbzzeebzzfeL75N/mGeb7xfOP5xvPNJ/jmbbmYY/rIZkP0eHqKI8moIAgLSBB42zH8RAKK/QY+H4F6vOjFMlA/juwBxwOOBxwPOM8BjpDYMSmAwVpgyRmCDFCBnOQIKoAM4kwpIb44BMV+Ax9PQYXdeHMcTUrZ9VgJD4dxu9fpFbJ56bJa8un1sFzj67hSut2PsDM6dvJ1bK9yeuZJj9xk7bQGrfPqnN8ebxtZKqngvEYwV7e9dwSnQIe98njWWp7CPrxe1ws4O0U21EFwSkX9LOxwfjBlqgr7UbAIg4VZ1WetQQm19SUqb1trDBapzC9hfM8d7qeQzSenQaNbrDVa35KCEhC/juBAFzPlKBHESE2EwIaAR6nAAIEQQwgyJzTmxqegfArKe4v3Fu8tT6WgPLd4bvHc4rnlvzpR7Dfww1uExAwI+PAWKR/pqEeFWwKIgfist8BnvOWVWlH/OLL3Fu8t3lu8tzzlLVwpyqCQ3GltDaHWQoMwcDZ2VPBYOagUdvjrveWXtahfe8u0f43UqawWt/x1Uh7gAUr6xQWMWDw85dN1mQ2r5Y3Z30v9MS5mA5ArZhOeb4T2aJMg4WCfLkv7FB0mufnq2j3158voRoL30tsyXYfj5j7Ok2OhM5lkx6CaFUiQonmJ7zd5iuvFdak1y69GwaJgQPs6Dpu3yj7XLYhg74aXYfuQVFNCLZrHdL3asXaidGuefUN6+zEOzV7oxoyBTHHAiZNKE8YMMM4wYxBk2iFjLFKUAcaU9xbvLd5bvLd4b/mVt7z90v8NeHDx4OLBxYPLZ8DlLe7ECQQCcva2LyMF5BRTKbmUkDP2WXBBz4DLK+Wd/nFkDy4eXDy4eHB5ClxkzDUmhlpIEI2NUbGMsbNCOIMwwY4xxBmQ6svBBX0cXOB+iFUw4KrZXjRO5WR8udb5HNXODXK468Tto0ntGKnI3tZpez3mCcJRY5sWskXr4Ei3u5st68NF0MUlolcdvtrX03HhvYWZ6qR7TrtOLAjvNaN1xM+93ki6eFWa3HMMHOagRvdWsqAcPy647GslKberWXUeLUY5MktFqZLDlWm/CufXRV7O5G4F56MTwN+R58ZI0he64IIMh0QwooSNuYwFMAwzGJuYOkU0VZLFEDruPLh4cPHg4sHFg4sHFw8uHlw8uHwRuKAf4EKYZEhQ8gf4HROIhKCQM4ww4PyTezDsiT0Y9nJ7MMxri9cWry3/qrb8BwAA//8=\",\"7N3nctxYmibgW1HUr5nOkfJ4MxGzG0jvvd+OrTgW6b2f2HvfSFLSqLrVTVPJalF19EMiASaABAEk8Og73/tTaYswBCqCENXaay8lZJzcOnQIawFijFOmnWNY3rsfDPsOtuDv94M5V0T52hKrTbuz7Zdn28PslIwz/ACWS1zpFrKY522X1YtHP2ctuyy46XJpwKnZWlIrG9mdKqw7SZyBqpMpD86c6Wxnen66H8yykVnYgu/CGtguTzRexDa94gNLhQKJWYVcEBObZpPXMnExHqbq8jyQufrUK7wuqyROl9edMqvne6o0SGz7E7Xv7LNcmO79sYUjSgV8P9hCrPOeSsMNttILaZzVVnrAmVRQUYQJUFAbFfrBBJUJ/WAC3wS++SP7wYjAN4FvAt8EvnlBPxj2qDccIyA5fyiXAZxQgAgEHBDJXxqmzV+hN/zd6Q0PehP0JuhN0JtX6w2gkgMIkMYaWiAdsxojaxCVXiOMJbHU4YcP9bvqDX++3lxImyfb/VHuCk3yEB0VnOmZT3CYxflV10VRnJgMGrXqtrAknBHdQNsLHa1Wa+zbp56cbnh6M99FQjeOq6nrwOT+eq78014ww5ve7Px200lki+Vts8rms+VitPOd9DRRLDf2OXVauN6SFGeZ/nZ7Ko6jxuYyq9rR/nScb3qTbvFcSFRrw1P2MK7lmG8Np73TqVJZgUEt+RZ6I/k7CmPyFnMKgUJSSWKstAowKIADBEGvoCFAC0sf+vcHvQl6E/Qm6E3Qmz9Mb2TQm6A3QW+C3rxAb/iD3lCKCCAE0ls3X8AgwJgyTDlmGL50sBN+zWAn/P4GO+EAOAFwAuD8Y8D5fHH4fSLzw3jObem/9Zwv6/vtlL/3nNvU53iOkl5QgpxywiBlIGPeGu+gpYZbhIHEimJK7j72CT9/7BMtzfZsvBzvpStvGsnktJEnrSZM1afVaiGGzdoOxdUpS25VHGf2WGRQNUlKi8ouXevUdUEdRsfRHAmf1PNRYtwECTO59p4c+1TOXMq9Xi97Xs/yq6idOlWqvDI+ldgYVlLn7EW0W/NDLr89m9vYp+llaAeOQrjbiEK8GtDtrmev6VJ7V8+AmaWpbo33cucYJd8iXRtTCcWdQOdZ+UoYCAqFMd4a6AACGGrjgQJeIwO8NwISTDn6rsi8TmPuM1rp69P3N4Dw+Dz/95M/P5N/Cy+Ps+eT5ezj1xP49sKHO6cPHz8+/OSHjx9Xh/1HO9l+cLvF4/t0y4dHrg9//eXTfvfXX26+8XCj/vF2p/7h45cb29vJ8OFT8mFxnx6nfXK7xcPV5MNua355PIM/Pj4YrWfxh4/pD/nrZP3h4/5hH0DxCDdfj+uvy/7w7YXxw8fVh4c38OF2mVDr9eNe+gaSXoNIZu7U8qN5uEPcThZb5W+L/zrD7Rb/M+P2TRjK9a0m/c2h+XWffTvx4aZ8PZm7v53xddd//6fNN+v7qlHfXeE/W8S3M74ehv/xy29X85+/fDkZvpwEZrr73SeBme6+ngS3zXBmvPrw33/9618fLl+3f//zw+3vL88ot6//34f/9XB4/80dwW/24Xc29w3O2d9eMD4fSbeJHz59+kZUgv69gf7BoH9vOfQO/mH69xzte/xw+e1b+3v/+wwdtyf8R/9An+hbA+CrRC+wXWC7H2rMHL65nYAYCwEZRLcxcwAKwpHkiBOJJH9+lyL4IIEv6wr95TXvh+3+Z4uD2gW1C2oX1O4eamcwkwgQJQW1WDtjIXXMeG2FthQzJYy3QDh+P7X7fB17Ptqt5DqhpuXaqhhPQPo07J/X2yztDBdyUKi2SFRALULap0XLq/WRd8aFsabXFt1eTnNYXtYqM1JZQtKo5AvTajRY7err2lrHT1VhZQ7tqxaFZH9c5b7e2bS7yqSirunBUyeX0qn8wu/MuX3t10xUHEe1yQiU5y1fTGuITbepmairCZyVZRWbuUzB4ny9qMBm/tJ/A7RjAP2RaOeJdB5zbZB2znjPuEdMQMilp8h66wwDyFoe0C6gXUC7gHYB7QLaBbQLaBfQLqBdQLt3iHafn9kezY5IDIHAt5GSEDFJuBBEAgYQweJlZvdysXtvXhe0Lmhd0LqgdXfSOm24ERYjZC3m3GKkjSBOYwOUcwJwxKA1CKM7a93zre5c29baI6lrh/1onaxmlxVJ4mkykytMMrMI1DqZUb+eH+0K/dLYDVySd2qjiR1TmI4qJ0pmDMoiW7XBqLVMzX2plRmbSzV+Is2t4C/RFs8G3UYtZQvH+jDVPa1iHiXQ7kCuJTw6Xi/ZVTxb9vfRJMoVeU4JiU09ymbB6XooL6dHEmu7ka19LLNgEKseKpZ6xeZbpLlhTin8A62OEKc098JgyxwkRvnbwYMB1s5J4SVwAmrufLC6YHXB6oLVBasLVhes7mezutsa/7HUBYwLGBcw7l1h3CPFMYgAYQz/Cj5RygkATAiMBEOCvEjiXl47994q50LdXJC4IHFB4u4lcR4JIowRyFqPETOQK0wBZh4TYDhxFiINsRP3lbgXVM2Va8lpaxr7TvswrhOwKWQvbHgtdEebpi7v7X5p5w0yWkzFGLXSdS9sOWGTy/KofYrQ1SZGjUL+OhqWon4M0hkZjwbZ5aj6ZO+yTHa93RMB+hTIJRWneWkGTWqU3I8USIJKO3UeWLyPhidwuFXN1QftaNkx20Y+lUmy9qplVg70uvVjc5BeJEZq4YuLwzkF5sfKG0jc7aPyD5Q4A5xjFnMCqVeYGkeIR04ZDxD0xkJGjXHKhqGuQeKCxAWJCxIXJC5IXJC4IHFB4oLE/bAS91gURyBAHGEMb/EBCGKAKL51PKJIvDT8UbwiPkC8u/gAETwueFzwuOBxd/I44CTD2jAghRIAUccINVIJwAlAgFIOpWdQg3unCYjnpwngEtkquCkLX0LLxfjKKWENVAf9fiPutWtIKFVZCj+opGs9VxeumRSnfDZVuC5Oy1Gm1500j6iHm8vFoulLXc1ZZ+f901mQicL0NM/ReWeQKOvJsH/M5apkwbze11qdBl0Vadm1F/1m7hoX41yyfB0dBym+PbSF4sdhetRzieMxWsNTbwnqCKt9x/IROL5FFiRGmJI/UuQY0IBprChnhgshmKdCMsEkxvChgawCCCEdRC6IXBC5IHJB5ILIBZEL0RNhHGsAuwB27zYzQjyQHeUCckjgwzhWgDnj/CZ2BAgmxQvNTr7C7OS7MzsZzC6YXTC7YHb3MjsNocfMYKEwYEo7xLGmDt16it2a0kmltcTU3dvs5PPNbnEGVBbArDxdFVBTTNbdZKpBtZo0lsdFH527VGQjXRyeG9M9bKbOzfKB1uatU0lPRqkd1KftoSw4uQ7TjdIpVTD9YrQdNZ8wu6i4T/ddosb2hXhHi4f+obFDtFqjZbk8UC2nHdWbJ9hap8hDYERjqivpltwOQCkDUrUL3J48X1U2GYa3dTNOO+3mq7LkpPomZgf/ULMD1kNGCeYQKa6gIIIwibXQSAomiBReGYUgDWYXzC6YXTC7YHbB7ILZBbMLZhfMLpjduzU7+Wh2AnFGiRS/gk+3YDhGBZKYUSAQeyHZQfAKs4PvqQHdN5sc1C6oXVC7oHb3UDslpNfaOQUYFABqITHElgILMFQAW48NdlKoe6sdBM9nu3FrONDL8qqK2iKXXS3N2FKf0h51B8W0s/FwWT93itsjGI0rtrdOL6NW7+Q7M4pqXM17Mu5k1rXe5qgrm+Jscrzo/ajQfbIN3SU6c09300n1ROZX3G4lsg023qNrPJOpEh+nTIqfskuXQdEkKker2XrVVBPe69ZyO5HsZRfTSXsOjO9kSzsyWwwx6ix2tXH0X2/Cdoj9kW3ojOdEI8S0xIJaBiyxgmNuIQEQWiqwdE4ZggPbBbYLbBfYLrBdYLvAdj8j20EU3C64XXC7P4fbQfAZ7iSnlAt6K7bjhEqMqGQUQikeupW/SO7ga+TuPTWs+2aTg9wFuQtyF+TuHnKHuSNQIUgw5YBDirESjlmpLeQMUUylhpIDeHe5gy8YJLtcVtOlhR2kCma294kBLp6PlXW+VVD7WpwfD0oHWNuIbMEUrVzTbrtU3g+aieKpss/0DizDW70OBdwcLXWOTXAztesVnw57bfpJ52JKUYYOx6yc36/9aLSblfvT83xT6oy3q3l/k9KJM2zGxXFU7ao+XjWM5Hqxb16pLtRpe02QbfR1Eg5zmE0OvfOxJ3HqDeSOcMb+Ru6qj970f375y1+S//vf/vLp3//tNvXfH46E/3hz27uVajrPEWACeqkRZIIiQihFgGIOifaeEKRCHGywvWB7wfaC7QXbC7b3c9oeC7YXbC/Y3p/E9h5630nKOGOYIXArygOUEi6AJExAIeRLaQ+9hvbQ+6M9FGgv0F6gvUB7d6I9q6xFmHnNoNRYEyEB5FZ54y33znvhnTWcsbvTHno+7aXH/VL1uD/Sgchv27u2qAsw1FnqRX+/7Oj0+nI4r2TmvL/MB7ul2aVq025tntnrYXeQ6JHx8Fge5S5JXJajkoojpoqiTE5PFOXlzrlqJTNpt3bpDAKVWpFG6UNrEDdmJ5GbT9yku1sXi5m0j4bRJEKj7eayZ3JUzq90YipzGz2OYS43qc5gHx7xyIwuqD+diHnzTYryJCXkh6I9DJixxCBmCZFUUAQhRdwSh26xJ5ZRZJDTwgbaC7QXaC/QXqC9QHuB9n5K2hOB9gLtBdr7k9AeeqA9jiDjhMtb2R6GlGJJOQJIcIA5fant4dfYHn5/toeD7QXbC7YXbO9Otke10RACAJTDUAAjvHFSA+a8tIQgyRFXkOK7t8mD+Hu2R75reyORUpcDXp6wrFxlt7wtDS5nBovzdWXYP17BXp5z23auDAfjZbmQ3RXRqOyve1Wu989rPW6ZenatG2I3UK3hcVzDed7JzZ9Om93gEl7nt/NZ+yir51ycgmeM96NSj5sp32/mPutltTwUyW2zOI4aMZmBymIUzxY92+jbqh/HO2XQYTodVmdqVRjOSv48W9Vw4f62RwT8u7TZf63tASM4El5IR4WHmFMrsCNcUMKBsAgrLy3wVAbbC7YXbC/YXrC9n8b22AN4vBfb4w9Pv0/Znj9cr5cvcIb/Ndg3WW4Ok+0X93jEpp8GAOU3b/CjOuxXtxXN3d7dNmOx/uxB4J/m2wYoDFAYoPBngkL8K2QSCCwE4oTgX8EnAoEUWEDJGMMASPxSKCSvgULy/qCQBCgMUBigMEDhvfI0JIDGK4qpN9zdwk0dcMoKrISmVgEEsYEG6rtDIXk+FO6ObpXIDPbRxdSG9YMrr1OrzHVfW16T+KpTk8vKLiSBsno++exMtNbpbV8OXTe3hlu445XiuNVM7od1XkHsQKsHddoU+6cnoRAvcqfYitO412FuJLeLje/6RCPRSua7CSQUqBxbOzUaRyIqjqPSNpG9VOvp/iQ5ndJqajA4Lg/TUbFWJR43DvExveTF/mFYXhzuD4UUQEJ/KCjUnnrAPJQUKquUxgwi7RCiUlHmjcMUKYGVClAYoDBAYYDCAIUBCgMU/mmhEMEAhQEKfwcUim/d7b1CoXXrrTPq8zXz/8JP9I008bdL3E1up9oXH9x93qkQfD4vfip6JDd6RFCK2x9JfgU=\",\"nyhmkiPMMCMYYfhieaSvkUf6/uSRBnkM8hjkMcjjneTROYUVBUZ5Rg0XhjuuHCWeGqeRxsgZa5Rj5u7ySJ8vj3xhhtWy7LXcujCr01mRzcbHVVXkD72et+3UeVaHmhU28Fhg66HATqYrg3F3z7u0gOdbBg+tPd00DxXUO51T6dJg2pWJ+Iko31Sqta8cJr1SF1wu3bErZjLJQTdN8gQNducN3Z+BGdTzMSwmb1G+W7Oe6j4o11BqSiiBp2ZHnig91OtzieXxcj2rzaCD/eYU/ddbyCOB+MeSR+qN9goLrDVTyBvDCNHecIYUVoYxgyzhHAZ5DPIY5DHIY5DHII9BHv+88oiCPAZ5DPIY5PGN5ZE+yCMiWCIJAL8VPVIiGWcCSiylEPDFccTsNfTI3h89skCPgR4DPQZ6vFccMaSEUkcl5P6WJ+WYxtYiARxhQCmqDEIacnx3emTfoUcKvkuPpUF9kJjPD4nGLN0rjDMc09RswdupfaW63+zNAFy3WzQv9HA/mVxUrunMTB3a+U4H7ecwXrBrJXkhRlfQwrTq7d1lnmZz8RQ9ZsXsgreu2leUDYrJnFwULpEYZbfD7bk0bdbTneJqX2Uwhcc3eqT9/CmJ+Xm2bpfjXaqzSAtaZZCNWmuuJ8KPekPgLntIkub+9CgwRPjHGh2tLVJYAgcZEpYxTCyW1CqFHNSOGUoA4PixC0qgx0CPgR4DPQZ6DPT4r6BH+LPQ4wMhgX+BPbLPL/o99sh+QnvEn8AjEL7eHukn9LDbn2mPCHyin0Sgx7+jxy8n8u+hR/rpt1T2enpk30XFt5bH76/1zwSP7AaPBAEpMaD41pYREAEFkgRJjIHAXLwUHvlr4JG/P3jkAR4DPAZ4DPB4J3g0yhCLCYaIWMAMgVBJQhQFwGMsJFWKYO/c/Wse+fPhkcDd7AQOW7wdXCoQprrDVZUOV9tRNjsaolx1H2+ixkTSba+iJpdLYlz1lV4Fla/JbaG2OSWPjcJyN1uOh8vlll56fFJcbvTpCXhsZuKSy3Rdq+VzvbJZpadXRzLJ0aBbOrpTolEysFXU6WWcyW3iYlyeTzanum8l4LY+XlxqTdooZchWysR12CoviplONpuINkCMq28Cj5jIHwoeIbFcU68800ZSjpn1EnoErEbQKIwUg8hA4AM8BngM8BjgMcBjgMcAj39ieOQBHgM8BngM8PiW8Mhv8EixBFQgIsRtrLUAXGJCqOSUg4dE4xe5o3iNO4r3544iuGNwx+COwR3v5I7MKus4Nso6g4BSDikEMPQCE+OYdx4ZyrARd3dH8R13JPL7BY+pynJbz5/dkucn82ljIQEvdbrz+akZzUbyQIeT4twflsAvhiW5Lm64M2aZx9dmfikKmZGY4FEj0wbdeuzn42Wrwa+SP+WOuXJ7uF25JRHncSHqpixdCCg7piBY89iflLbRshXVuKh24a3gUZ7Y4bzPla9TViQK7cFksfOl4c63NpWzT55bjnRndd9lEryBOyLK+Y8V9WyhZMpgQpGi5Fb7KJ2iQjlpmdcIQGSl9BKB4I7BHYM7BncM7vjTuKN4V1HP4ucZa/2e3RGT4I7BHYM7Bnd8S3cUN3dkiFLMKWYPOdQMckEwQRhLhJB4cQ61fA08yvcHjzLAY4DHAI8BHu8Ej9IIKm/ZXkJLzZEWlDtsDVYEAm890xoK4rW8OzzK58Mj2iWaqcvFJcrtZSU3nZfTbWjO6CipiER/XklsatmybJWPyXoC7q70gGEr2SioRiZnule81wt25K30MjLnHh62VGPAzqPoCXhMk4ajpCWn0bSyK3d86TSpVFGyPG9Gs6IazUmannr7bGoYH2/wCPZdtJsfV7VyNRpdlXT7AkNn3EiXlsPreW6iRnZeTjRpwa/eAh4lg+yHgkdsHRBOKA+0kreAc04w5BAIgiGkAGoCHbGEB3gM8BjgMcBjgMcAjwEeAzwGeAzwGOAxwOPbwKN8hEeBJQKYwFvBo8SSQoaIxBgB8tIOjwi8wh0fyi3elzs+bHJwx+COwR2DO96lw6PTRmlhCCOUYactIIBKaKnHFGpLKEReAnf3WGsEvueO4rvueEnON5dqfUVadro2ucUuPy3MfIa66Hwp5KpH0h4kOyLy11mqiBuN/lhN6amd6NcuR5etws12vYDrGp0meTqexpXzvhnnCk91eIxQfV5PDOJVNuHxunJcnWYxSEzr9WnCbKuFTtZVKhmV9DMf3dxxbGfV1HETbXuyGdPK6ljpbtOb/WFdsX49Zng0S6lDe1GsdXZv4Y6cwB8r1ppoR4zGwmtmMVCWUkQ4984QYjRVQiillDAh1jq4Y3DHn90dv3z58fRwffnuUXmb97Ij85M7u98encE3n3tt+DifLA/nf/i7eJj7st/G59f85vfxdW0LZVa7f7i2h7kvXNvja/722hTsNtjtn9huQ5fMYLfBboPdvqXdInCzWw4oQ0xKcQsGl1hgSuhDZQmG+KVNMhF8jd3C92e3MNhtsNtgt8Fu72S3yDqGHRK3hwBHPbJaSSI1okZwzK13mioGPby73cLn221xVHc7XlTlgd/vNrNxpSH5PldJ1OyuFu9YLXGmYtPa5DeUpxfxphLbKqhel5OKIYMh6rrqIHUQR5lqjU2pHJnkfpO3vPlUk8x0aZhorcewtk6qST7ajaP9tXlkRZparyanaj3He/HqUII6baNinFlEMrurjrKO1TOnUr4lavttNZNO0GVBVvcHn48zy6i+bh3exm4p+rFqRjURDmBGBWTGWUERodAwKSTR3GCMPZbOGoCC3Qa7DXYb7DbYbbDbYLfBboPdBrsNdhvsNtjtj2q38NFuGWeIIHSzW4Egg0RSKjFl7MUBRwi9xm7R+7NbFOw22G2w22C3d7Jb7QHF2BjikLLUIMotkkYIJQFCCDijiEPcgLvbLXq+3Vq2yrJuqtqc+eVg3Z32M2ln65Ne/ZiYb3eoGA8PfJCX+/Fw3Z3HqfM2aVP19qVRnBWuulSybjHJJZdqNkkTEm+ag1RZz3NPBhylbXZA69jyY1xCLXBJTPxi667Gx/2zrca+mcvnG5cUTdcPUTEeXlecj9fz8XzdNONDIh4M5lJDVDhn64NWYWvz0xolJL/av0mjUc4w/7HqboWnFhFsHv4zAFigtFSKIqqBAwZ5yyVixJJgt8Fug90Guw12G+w22G2w22C3v8NuQ0hUsNtgt8Fu39Ru0aPdcowAw/yh7lZSjhggjGAAMCAvtVv8GrvF789ucbDbYLfBboPd3sluvRfIeIoBtZgJwK0iilOMrDUOcg2QMdgiYO9ut/gFdpvI9Pp0uZmLyaCB1iQj92I1TiSKM3ihC3J7OlHjXnWS2J929UJ2elolezgxbe6Pp03DnzKt2ilaJw7jaa5P29VidlZK1Lb/tO52eLPbq7FR/zK6VHsrmNwdaulMv5WbpAbL4tVkh6OkIk0xTeQH2VxUHEclulrv1qnEonIuVy/7hDSgvjoN5+WJyNYn/lBuJ3xpz0eF2eT+dksgxT9WSBR03EGFkCKYWI81Qx4TKLRERApFnVSOaUhcsNtgt8Fug90Guw12G+w22G2w299htyLYbbDbYLfBbt/SbvGD3SKKECBUolu/WwIxBhgCjghF5MV2S15jt+T92S0JdhvsNthtsNs72S3BBlOOkCcAc++JIMRyTjDjhEHukDL69t3dc7YQ+Y7dUvBdu11zMa5X6KjfS4rFopI7TI6r4z53joYGtCNseGchSR6OdoOMmnaKh0shgfaJ6TFVo7ZzzYj+UXTPJaLal9mm3W+oOUvn+v+0320zXYyqKQWnXOTdApqo2S5OSpVEnS8yvtzv0EpOk+jcRbnOdJqMJtHIzjs7KBbjVRZmix2W36bbcnc0mwbfLPvd8jiXrDQax1w0fsz3urfdckF/rH63XnrgDTaIAkudsE5xRQGgygsolcfaI8kpDHW3wW6D3Qa7DXYb7DbYbbDbYLe/x25lsNtgt8Fug92+pd2SB7vFhCEqAJa/gk9ACAwAoxBwDjl8edME+hq8pe8Pb2nA24C3AW8D3t6r4S0hUFNAmKcKQmecMkxrSL3DiEEuMQdEYSfujrf0+XgLLnNNzpkKnWxZIbUbZBLVao1l25ll+bjNnhAczWm2zxubsxWrxt4fxvM4e42qeSmSkyPWtqDoepoC63T5aEuNqTCGHp5qmpCtVbLpwfJwLsj5MDXuVAd9MuerIoh7vWln2NrvLsfy+pQoFPO3sDJs+4vJUie39Vym1T/0+fjiUsvxJlVJqdp+XgO9PI9Zt5mZ7d4EbykCPxTeUswRMUQxYozGBmgjlDBIQIoMYYwrZ5ShhAa8DXgb8DbgbcDbgLcBb98t3qKAt/96vCU44G3A24C3AW/fEm/pA95yKBgDgsFfwScOACUAEgEJQpjCl9ote43dsvdntyzYbbDbYLfBbu/VNIErI6US1nilLGcUKu40oMJTTpSRhhLOkFR3t1v2fLs9lQSa7tCiMLtyW68X41knriZGh8tkcTmNVwsQp9rZchIlVqSL3Jx1U95U8tpsfeYA8SrHc5utBXlWvK5K9VlnTutwnIieanibKe9cLl/fu2iQPdYSucUCHVnsuNRxYZqtdeUlU6Wr/HZSz8XFuFJWOJvzzfaWLJaZebfHTpWzJVlwtoWrqFdm+xbSs27aYvImdssw/LGaJgDgICOKAWAEB956Kw0HwlJjFMYcOQihdzDYbbDbYLfBboPdBrsNdhvsNthtsNtgt8Fug93+qHbLHu0WMSkQg/QWVsYk5hxhBjFnCNKX2i1/jd3y92e3PNhtsNtgt8Fu72S3TFIHCLdYae0tVEwJbZjjxkgKtNSSEg0hNHe3W/58u530T2rY60zW4/ooghW1zjZNaszmBXjIJhuH2abWqmoSrV2pP19tV+Baax2Hk3St3xodKivUm/OlmG76tlR2Ipm0iah8qbDmk3ab7iQrKE7P27oEiDtMI066C5U6Lsw0Ps9L1XM1n5kMLxIU4mJc79YKqr6akXQ1eV1EyVQT48w5mizZdC9S7oThcGX3nXHWxW9it5ygH8puueeQK8A0ZJogYKQz0FLKiQaWIyMhU0Bqbt+J3f5/AAAA//8=\",\"7N1XjyLdegXgv+J75GHncGHJRU4NFBluRjtUIuf06y3an60jq31muoeWPo7eS7ZUgjuqnlpaC+wW7BbsFuwW7BbsFuwW7PbvabcM7BbsFuwW7PY77Va+262mWhGJJX0U3lKiiRCUcY015/Kzdqu+Yrfq9exWgd2C3YLdgt0+yW6xooZyrih3mMVYSqMVcw5bI6SymgnuCeOIPN1u1Sc6E9qqck0PtN/ezGph2FyJZQ1Z0j/NmnNeZn43WFh3GbS7zc2lOC4vm4PUl45jTLPzEBei/M5acupU5CHpN1a77YCLadH9ym6rWWGzzYXBbO2K98VsSVd3PyrtwyuNTrdleq7ZOCCm0jrWC4/OBD5qOHle5ebV4jk6vRUc2k+PlfOdFy6jc8LbxY6cnOenbtuUv8FuHw1E4u+VuyUspjJGWhoRMWwdIZYzRRnlwrqIMOuR40yA3YLdgt2C3YLdgt2C3YLdgt3+gd0KsFuwW7BbsNvvtFv1sFtFkCKaMvo+Vsa5QoRTpgkllH06d6u/Yrf69exWg92C3YLdgt0+K3drhOQ+4opGLCLCxI5y76mRXMTGM6aokkSq6Ol2qz+yW/yh3RbdlbXX4+B0HC7LpFBuTw5+G47jSPHS6d69jJY91B5t2kF71BnHBzJMzKJRrcbG3jdzeXGdxtA1w5bbV5cVU5iI4Lrctf5pZ8L0kbtt6/XFdcqX9aKFC3uxC5YTu7+YxKhduFC1egkdsttwkAznl3oadMeTzWkXrPKjVjNaXxe5W8BYOKtSK3tocZm9dQITzGhr4tjz7VYSofSn7DZZbqxZ9qPj6fEn/SP/35/f7yb//fA4/UtDvpl4jRGaE6uVJ0QI7xA1yEjupCBUC2ulwV4SZoB4gXiBeIF4gXiBeIF4gXiBeP+AeCUQLxAvEC8Q73cSr34nXqUpJ4op9BP9YFwJpjQlSAqEufis8VL0BeOl6OWM9/0ng/GC8YLxgvE+ZdMMG0ucZs4yZa3WsbBUeiqpYLG2Ljbes9hr9mzjpegD4xUfGy9aHW9pKT8ch7IXHzZj7LjtV0+toy6TS8gPxXEjuV0inl9VqpU+X4ppbp2f50emm06zzWzYqa3VpbI2lMi9yoLtPrctyMsvuxXi1bg7t9IMmjx1x7hTrL5lc3nfx6PDbjk+hpVVcT8o3tIaudSTSuGkbvIexk4U6+P+PLxW+/bUGWOFu7vZYLs+bGUuC3fbt+/YNNNKSvSKxqtNJK3DOlbMIumRjh4vG5h3JFIUMeuwRZZ4iPGC8YLxgvGC8YLxgvGC8YLx/onxKjBeMF4wXjDebzReih7Gq5HgFGHB9E/0gyKtiUKSM4kJR5R91njxV4wXv57xYjBeMF4wXjDeZ22fOaIsY4pLpyNhsNWKRzFGGhHvIiI8E8IwJZ9uvPj3jTcJ+rMwbgaLJRnnk06rXT2OUUBbRXk5rpetbfFwl1muttmU0VltFtv1bbDYNI+HvFpHna7o1G2nptem0LidKtdqx49yF15Ofr19Zq9os7g1sc/Gszxmfpjtr6cVO24LNx3VMl+bmRvtVJr3oJ40opnZBeO67tYJV5t9ZewHs1trMD6NY9LM98JIbnLtRc53377FeJVir2i80kcMqRh7FgnllNGaSWGZ04xK6l2MVRQJFMVgvGC8YLxgvGC8YLxgvGC8YLxgvGC8YLxgvH9X48U/sUSIMC45phr/RD+wIlJzhjRXUkih6WeNl3zFeMnrGS8B4wXjBeMF432S8TKujRCxxEJJTJ2MubPkkalkiBlqBdOMSPR+4/Bc4yW/b7zTxqhBvDO7omsXc9nhGDcjfPL7jfbusN+ML4NkuS1shyNp1qm+doTd5H1ht56NxXjRmIvKFa9nOi2YhhmVZuM1KQyn6+CXxjvId3WweUuJ72xPu3SKJjVb2iy7Zd1fVZrnEzahML38/SaTemJ2/c4bW497SZTlI7zqx6W0M75Fu61mORf0bP8kzuNwYbfo+carESeKvKLxIk4IdZ5b+djnU7GXNCaR01pr4ZFgTsTWEMHAeMF4wXjBeMF4wXjBeMF4wXj/wHg1GC8YLxgvGO93Gi95N16uNeaEkkdXg9KKIaqpRAJpTD47pUbpV4iXvh7xUiBeIF4gXiDeJxGvVTxGUjsVa0W41yIWMaaUo5gQzmMhhUeEx/HTiZd+RLz8Q+LtbYUp1A9vYZwr4t2oFo7rC9aL8ukgyJq5cjI692pmeKtvD2ljNTGnRWDWF52Et3obr/qN/kjrILCjk/e1N5F1psG8ZlfJL+t4x9t7rVQ/7bpvR2p77Vl+lNhDt5XJsFbYZlOap42ezm8G92VQT4PGYbUNyaw+mG4douNuJTObTad/xJ06a3Vu61G0fjvVppujeHs+8XIpNH5F4qVYOktIJCXlhoiIYoel4iyiBCNKiaNExN4gIF4gXiBeIF4gXiBeIF4gXiDerxMvx0C8QLxAvEC830m89J14taKKI4XlY3GNMSoxogIhjaQknyVe9hXiZa9HvAyI9+9AvLXT4bhZ/1tlb9aLZfaP35XGf53953GfnbP9/72yu4/eL62ZZfSPVLtNHwf/z0UgyiDK/xKibLwgEbHE+dg6yS13VhOJHHaI48gji3EkjHz6wBtlH4my/lCUV7khlu2aPOTurbk5jQf6xO57UmkeOknKiqxKC7PuKopri6jUXg2brSTqxXowcQVvJ4tzu1x8W5zzg/mss6xHyahSLo1R6Veh4SBfaI7LfWbkOpg08WEYCturRK3zvX66UX5OctWDPVdUvtYKsnIgU1Mvprv9dX+tVZvyTHkyagTJ5T6/DWujQm45JJewcWTX3vDpoWGCiMBEvKIoO00ijBGhWkVR7IiUVCjumWPUWhp7JhyLlMQgyiDKIMogyiDKIMogyiDKIMp/IMoERBlEGUQZRPk7RZk9RBmTR+Mv4oI/yn+JJEQRiglDDCH9WVHmXxFl/nqizEGUQZRBlEGUX1OUpYmYo9ZFgjmEJKOxodQzZbASmDgiKaeO6+fXUPDfF+W0t8sUjidkkqP1WkbKxbOmKxtudvo4K125Q7NA34fbwXo0bt7Ppze2qwV3V+7nWZaGKij0B3kezUaNuBXt9u3JejCo3P5pRjks1ouNetr2SXdaSqrhML02/Zr6660zrJWavtfYpdVcu5evB2Ligqywm1aLBXbe5tNwkM37WXE2j2m7d2jnMb0PDu2GW+wW+ykuNsP/+AZRppLQl6waRo4qIS3BjDqihIycdVwqxQRm3jpPHPLMI6ihAFEGUQZRBlEGUQZRBlEGUQZRBlEGUQZR/tuKMn8XZYqlYIxg+hP9kARJLAhCnCvB+aczyuIroixeT5QFiDKIMogyiPJrijI3VsSEOeGFI4h5QQSOYiExiSw2TiJDH+8TzdNFWfy+KEfnbLWqzZIDL6UjT/TordPVcW15m/V9w03KIiyl+/q8fJ+vZiFvXC953Op1BpV2ZTi5NErBaNrKz+Z0KPUJtYK5obXcgP1KlEuRbI51ajvFdasqfWCksgJ18P34VsPDU3syGibLbau1tDzIgv3ySLNeHRG8dRHF5ymPCqc93+srSysiZ8/dLCObmsTd5HtEGUv0kq0XLI65jVikIkScZJFGjDGGIyGIkFg+stcxFh5EGUQZRBlEGUQZRBlEGUQZRPkPRJmCKIMogyiDKH+nKIt3UWYIUYYlFj/RD4YUUpoKSSTmRDD+WVKWXyFl+XqkLIGUgZSBlIGUX5OUHYpJ7CgxRhmNqMDCSKulJhGzRFtPjcBayeeTsvyAlNXHW3nR6sjFbjrranlp3m/z8iJZtUMbNFfnphkwXT1kPbRJg+45dIN149Jqt5N5fjSZT7icyNqiM8tIkgx7y14JtRjr6iG6bJNfbeUVu2t21L3eNVAsWGSVJDsN3nqLWms6Vvcg7cajYr6XpvnVKQ3qSXt62a/yy8rhbXfEy1rSPI1yvWhtWu3RtNEsn7Y3JaPlsZy4yzeQMqdavWTtBeWKSeq8ErHU3iArtJLMaKyQ154Ki2JM7Pt0LpAykDKQMpAykDKQMpAykDKQ8ldJmQEpAykDKQMpfycpy3dSVpQzjJHA7yFloujjUVUSrDQRnxVl9RVRVq8nygpEGUQZRBlE+UWn+SIhldUWx5oggjjxsSYaERJLK5B+FCljR+Pn116o3xfldpUdTxc5azqZtku3dlY4HNSop2f9Q0Cpn579NeP3/KV5rc2GuV0dr+ssZZv9W7h0xVw0q5QHyXa0zh2m8S6/Xsv5Tq90+IuQciFbJX1ZvIiFsbX6LhzqzXTEXeT8JbtNl0zPtE3f5uGQ9oIscHQ66MRBp02Lly1nt+1002vhOOv053q2y6qjyb6xtvtlNf2WkLISir7kNB/WhHukPIq9MHFsDYn1Iy2PnDAochE1xsVIEBBlEGUQZRBlEGUQZRDl/1Fa9Jd1vQop63fXAFIGUgZSBlIGUv6XJmX1IGUiuZQYCaZ+oh9KaE4Y4oRjxBCm/0vK/wUAAP//\",\"7N3XbitHujbgWzHmZB/w32blsIE56GbOOWIDC1XVVUxizrz6DcoznvH8y2tJMuUxPR90JoCt6sCm+PDl+72RlPVHSFk/HylrIGUgZSBlIOXnJOXADOHWICYcos4bwYkNCdPECuwRt5YFRZB3Dydl/RVSll/vvVBy3kRd1ly1Xc9fxsW4WOTpAZp3fKbMtBhIJqJVbk275bXJh+JyML9VFrlZDo9yIotb6+Oyte5HuM8KfJDSxlTn3eHsm6Q8uoeUr/10VfK26lherI+zy8ts2Zid5TBfmBULlZTe9I+X1aZ+mK2j0jSqVKoTy1MNwcdHevGS+GW5sNkbvK1WxVJffTpTk9d5XB02Hk7KGBMl+VOGlAPlFhtEDSNGIsWDl5pIZjFNAvWEGKkDQxBSBlIGUgZSBlIGUgZSBlIGUv5NpMyBlIGUgZSBlD+TlPUrKWsuiEISvw7n05oKTahiGBP03pAyQx8QZYaeTpRflwyiDKIMogyi/ISirPD9WyjIEO+4oQhzmnAlmNHWW8O9tkF5K7x8tCgz9HZR7jSLg1F9wg/D0mk5OeVb+fLBTJPjcb9Lbwrroald47iQ0GN7SK6ZzGqtc4fVMellX+jBDIvSFWf9Y6pTG7vbfLoZDpCXYXb+rihn0nE9vTjUW1EGr2b6VEpurZKMXxZ7nVnXlzbTW0TN1mzXHUxK06h0HTVTqCvbthZQLtzq7VqhOhrPRlWd7WVaqr26poa+t1oUsp8hypiTZxRlzV2SIIysUfeCLeNFwjyyOHArLLXGWIooNRxE+d8hykDIQMh/EEIGM/63mvEnIzGoMKgwqPC7VFj8+1X4uRn4atb3O1T6Z9vG+J+88Cl9+D+Ef8lXlwz8+3H+ZejOv5QIJYmg6rX3mGNFuCQccyWkJO/tPWb4IwCMnw+AMQAwADAAMADwcwIwpdRa5QU33jtBkQqaMksZVdxwZ5C0zmAtH95SwfDbARilZXO0mKbLhWpBFc79JbsdFmw1XfVS5cJ82802Zgc5aE6OhU0nxAkej5LOzC96VXrqLPG5d14N+cTuonx3Mt/ets1tNcPX5++0VBS4SXWGjdA7XbO5axhG+eVgiMrlgi8TNIxtqZnXIVyL/fo1mkWl0WY6Gp/zYVtPofo8dUZmTM6TSQevj2U/ObTWrNk3L0bvzp/QUoEJVlg9ZUuFVdo4ZbwimmrqKccKI2ES5CgWQXATkkCwBgAGAAYABgAGAAYABgAGAAYAlgDAAMAAwADADwFg/ArA9zd4WhLCvqAfsZIYc6YoJkpLpuV7AZh8BIDJ8wEwAQAGAAYABgB+TgD2IfFC3z/80yooxIhFXHBPiLSEKc2QV0F4FB4OwOTtADy9xXWdnm3lpsT6N+pMsVFLzbqx09Ncg1fnm1auo0er5Xl4kBNZLe52rdbNkSPdiGV9OSy/XHDEN8Xb2J/S5lKr12hiipPvAHBkfeZgk/k+W7uWDj6OavvZMGwPx2hcTNp+OUaUV0YoFV+a0Sx+Kd/qqfJ+e2U9WU7pAhpf+pdssouTSWCHysahZWY4zF3Ou8mnADDDrzT7fAlgy1ASqEkQ4ZZLZ4QWihKpg9ZJ0NYQjRTVAMAAwADAAMAAwADAAMAAwADAXAEAAwADAAMAPwSAyR2AGSVSCKEQuXcKI0a5UpRxQRB/vd28y3/pR/yXPp//UvBf8F/wX/Df5/RfgRTHNiE0ub/aWC6RsoJKTaVywklLiQuKevVw/6Vv99/1JFoewqomz6547cjeJrvOnnfzzr78krqt0axXPbRXVz5NKvN16RIdKgWxkoNOyFbHNT3EYilO1avMLOlqEC9SaJhaz7WMvtcAkV0o1cz0lrl0rjU/qlFynZnF9EYvvfhw6C1H1fNxN0zHl3gn753CNX12DZ/3hZiOSjs+m4wKo2gx6R6HdButon7HdkZpmrjRePYJ/qsUks/ov4Fop7GW1BirgyPBcadcwoxIArHCYyeCIUKA/4L/gv+C/4L/gv+C/4L/gv9q8F/wX/Bf8N+H+C999V9GmNCUYX0vABZcaoTEPRIsMSLv9V/2Ef9lz+e/DPwX/Bf8F/z3Of0XcXf/MSqYgKX01HOJiTUmWCsDDdwLrRJjH+6/7O3+m7t2pvS8qJB03G6F4WmWab3Y8STTLg6S4/AlylgWk9RhvrCZXRJyk4Svh61uoXJZH1e8NV7W4trokvBjebBelaQ6Da+r/Pyb+d9eppTdZDqZzPJmSTW/rVWiJYv3+WJlkZlcWqZbzIxq/Bidat3zNESzXLTf9zo5rDPV4yW301eZ5BJ8XJ/WSW0wFj3cKaMy04vqbrxzn5D/pQhJ/Yz+qwR1yodAjDGBGKqETzQXRrigpebIGmsCwwj8F/wX/Bf8F/wX/Bf8F/z3P95/BQL/Bf8F/wX/fYj/slf/vae+GFYEf0E/IiyYlFwIrBjSnL17BBz/CADz5wNgDgAMAAwADAD8nABshOMmEYnXiHtuAqXS6QRTIhXFgZIEa8cT7x4OwPztALxsL/P7ATkUV7w+ypOksZ6O1ul6+XSOXHlRFqc8ahzPld7LGs9mdpfuDRrroiqi7Kk1xLctm6c747aKeeJooeOIOHVb2fC9AohsazPKVbcvvHkepEartZjnjrVzcdQ+M13NhjkrDckZV19wMUSzuLnb7XbZuL/cFg99XZxuJzXZw6X0bUA3m72jm9JonlwnNVH+lAZgyrjizwjATgRumb/PG6QyOGpFcNIlTlGiiMZUKBk4RxQAGAAYABgAGAAYABgAGAAYAJgBAAMAAwADAD8EgPkdgDlVHGvOuboXQGClKKWMSY0Iw+/2X/ER/xXP578C/Bf8F/wX/PdJCyAsJ0ILaZU3hCfEIJ1QRrzyRBPEjMKCcuXEw/1XvN1/U+OKtGEQnZxanXW/pw62uWqJ+kvq5dROV+lGhpMa316GTNdpsh/UQ7887efPw8b+UBhMeTOJ86dSbGK6yk/jw7W82OZq3wsAF7VsL1s1j3n16unB3maF9Wm4HBYHIc50Ur3OZLBtpK92uDm9BoAzh8EiR9PHI+q1aXE8LhR7B7tIJeTCZ/tpeVm/mbi6HMfV3mf4ryLkKQuACWVEUYoFQZLYRFssMKJMYCeQ1sEGyhLKAgP/Bf8F/wX/Bf8F/wX/Bf8F/xXgv+C/4L/gvw/xX/Hqv1IoLAWS9wAwwQhLRSnCgguCybsBWH4EgOXzAbAEAAYABgAGAH5OACbGJcYkhiomqENaEWGNTJxXRCokjNLWSM79wwFYvh2AcQdNbi+1bsSmkxbdRVoXma2eMp3z9OVltKCl7OGAllOW7XZnUYM2w/RU3iX9S2PSHbdXou6Hvf2tZ3R1Lxr7+Q1XYzSat74TAC6U6k0y6mVY6pjbXarFfmdwqzRSrcN4W7CYa9oq7+wxhwxORbOoW6n2B2KcPlWXE3248EID0T6dp/Ob6a154oXbFF0XJy5rm88JACtMn7IBQtIEKUQsYZ4o4RC+u6/lBhthpfBCKcu4xxIAGAAYABgAGAAYABgAGAAYAFgCAAMAAwADAD8EgOUrACskpGZC3QPAgjAsqWRIC0EEp+/1X/UR/1XP578K/Bf8F/wX/Pc5/Tc4o6kUUjLNRGI8x9g7QQkK0luJfCCMCWof3wCs3u6/+cbpsmhmG3ZHozLt9RfFtR+dWPt2KqZNSsnqrVeadpukPMipTp1lwpClJuMTH+xVZlVpRuNjt3Hxk2bzWtgM3Hp/zU5Hk/P3JsBlXirzDhldT+XLDF2K43yjy1lQIextlLOFGnoJ8WU9biWInEvTqDwpsWthFHX6g44898yLr7doO9NiDXcdbZuX4cab/K07mVbcpwSAOXlG/6UcB4YZsppbJWUQWggvuaUcWcEVEZxx5gQB/wX/Bf8F/wX/Bf8F/wX//Y/3XwkNwOC/4L/gv4/xX3X3X6EwE4hKefdfTYjiCjMtFMXqtef2Xf6rP+K/+vn8V4P/gv+C/4L/Pqf/WuI8xUJ5nSCHkKDYEoeoI5Sw4IhXQcoQRPJw/9Vv99/22OBaemc3273pno+H+3+vvXPPdOvNdYp0kEy7foHU/WmfP+RqjO1H2xmtzvHgkh1uxx0RHY+L1Smz3OeurevVFFb9qF44f6cAorBx2qd6xyXaZFmenOqytucu55r7xbFzo/P8S30z3XXKmfP8XgCxoV6Oz4VJqbq+zGdEOJfDaj9Tc4d4pUHilGUzNl4NiVt8Sv6XI/qM/uu5VQQrwpChKsFEBIwlJkImiUPYaYcQNZpCAQT4L/gv+C/4L/gv+C/4L/gv+C/4L/gv+O+D/Fff/VdiyaXk6jX/ixh6TQNjRAVlmMp3AjBHHwBgjp4OgF+XDAAMAAwADAD8hAAsEbYyQRI5pa2ihnBOLcYJpcpg6pTEAuuE4UcDMEdvB+DJYbw6l/fr7bzq6/VU22yyvc5qW2mzbH+I3CC5yFIyytTTfb5pZ4691bgnJ8Wtma8yg0q0PhZszo9a8SjfZ0lZ7Vk5NsnouxPgdAfdhPbp6nRbzKZecsNeet7aT4tbgqJ1f75dTcuhRJLs/hzN4vHuWjkTn/giGXfYnJXk6dwOOyrOtp1KbZujtTyllwg1Zp9TAKGZEs8IwFYnxAipHBYIYZToRCSaJwRbyQRCzlplEHIOABgAGAAYABgAGAAYABgAGAAYAwADAAMAAwA/AoA5egVgeh/8zgS5NwArpIlUgqrXCS2Mvdd/8Uf8Fz+f/2LwX/Bf8F/w3+f0X6oQ4ZYgHoIIXnLDnZCUcJ1w4RAhRmuhpH94AQTHX/Ffhb/qvyLVaMtuVuaW2cyQ99OzbG5c6bv05GII7aQKw92knspJ3+zFi4nLndNxc57GHZ8rVzbpi26mc0XUb08LJSq6vc0+3RlF7eV3J8BllriRaxXyY3vS8Xl66Df31eYlW9GV2tUGUlxnqyxbcbVLdA8AEy/orWQjhYQt76/zYcVGUQFVaiSZIjtvDRYN0kw1uu1t9Bn+iwRTT+m/IVCeEOETKqTm3ihukWA0ECK4cswJZhAhFvwX/Bf8F/wX/Bf8F/wX/Pd5/Pf+Tuh+Du/m4/6+uxh9ogwTkGGQYZBhkOGHyDB+lWHOiBIUSfFaDaEkEvr+a00wfm81BCcfkWHyfDJMQIZBhkGG/6gy/A32/c2m+3mk/HvHg703gjOlucAyIVo4oRNGuRaJtwnVFFkmMXr4fDhOvsbDX48H315UYVji7UN37KJ4Nj/P/L5h8vP2KNU+HPvZbadxqqHyeD7oJLR9rKRH21121CTpERr08/tTJ9c51VPTou5mh71ubZO55nr2e/0QrSyfkdw4g3LNcSYfM3xKLofK/mC7LTw/nM/85ZI0x5VirzsI59IkkH688rNN3W3Hh+sSL09LP6wiK9KXy3oX7SuitR6j/qlfKj2ehxmVGD9lPwRFxGMrrNaCySAFZjZwz5kPmHvLDHUYkcQE4GHgYeDhz+Dh+17fL6D9+93465t5PCj/Ytu/tzT/csf+5y9uvbnen137H/77+AP+4X//st+5f7x8/+9f/nbh/uKwvuVhf7uswbXBtZ/HtdlTuTYG1/5Duzb9M7n2zzf8n1bN/pkCAbsBuwG7/x3YTb5giTHmnFCpMf+CfiRSc6YQJZJIhPG7i5A5/Yh20+c=\",\"024K2g3aDdoN2v3E2u2s9gR5J5S8jz11KPHIWxNYwImgQeOgGfP88WUY9O3aXazO9unYo+h6G+wuL6lmP/QmW3JTfVZrTWzhdiCXZSfZcFyR3PSWm8pgIyqBViuF09ioZXbUaZ73SeVk8/hS3JNa91bZnL9ThpG/nvvxdFrse51v1hYC77QaH1Squayv0eVcW6Jap9HtDbfzbTSLfa57GySpRb94PpjiS6gsltnaeZFomQ/Z0vI0yg5XyaLUisvRXz9DuxVR7Bm1W1iZqOC1NkgQpZk0jASqtSZacCO9I9oE5UG7QbtBu0G7QbtBu0G7QbtBu/+M2s1Au0G7QbtBuz9Pu+mrdhNGhBSMsy/oR0wIJYQIqTVGCDP6Xu1mH9Fu9nzazUC7QbtBu0G7n1i7DWUuoYhShu8D63DQFgcjBbIOa++dvc9/lZQ8XLvZ27V7XFzdDmW5GkfZijk3Ot04P8/s9mnLnW/02rPdol2KV/F0crXl62C0Xe6O18OlUm3VmwlXtL/oHwMbXXDcLbnMml5nYn6rRt/Jdmf2+35+XadyaorMNzrzEekVV5tZxMoFnieDVaZU50UXB765V3/g6HZKfLkXNdarfLaBsrOmtU01HTQO7NbtTkdu3l5mBhV+WXyKdgv0lNUfVBCtMKIIGxsoEtYHazFXFnGsReBMBmctgupn0G7QbtBu0G7QbtBu0G7Q7j+jdnPQbtBu0G7Q7s/Tbvaq3VphxiTV5Av6UWqMBCJcccqVUO+uuOYfwW7+fNjNAbsBuwG7AbufGLsZv+uiF8gnGnnPPA+I8KC59UlIOPXKCU3U46Pd/O3Y7YeTRjGI85HuW1czy6jTcJRZE5dtb1+Ozdvk6rqnar6ba+dKme6+1O030Pw4HL3wfmt06x8H18WuXZsO46pbZNMZmpmReH2cfLfIpDaf8lGBDWY13VrmVr1+rrta3eil1b3kNw3La5NCTnZCluFJaVKJD1PkB4vloFPJuoGe9Ny0e6vS4mIrRz59OnM+ol1Tyu/On4DdTBD+lHMOtaQ0cK2ISAxGwhJj7xefCwIHxxVnQiilHQXsBuwG7AbsBuwG7Abs/oNgN/9b5fVTYDdBgN1/cOyWgN2A3YDdgN2fh938jt1EUI6oFFje5zliQhHSSBOMkJTv7jERH8Fu8XzYLQC7AbsBuwG7nxi7NbOGKRSYtpJ6xgjiionEyIRLhGxCNDGaJPLh2C3ejt1iVr+5Xim/OuNKq+mz+jjWU5/Z91K7XrmRP99GpV71kmql2l01GZZmra3InbK43fBonQr1Rk8MQqO8P9ab0w4mjew420LR5Ds9JtnWbX7tlFZOLUR9NFqaxmrG0nt60GjBsqntJL2uZWd5RdOVaBYPBoO5odsBQbp7Ti+bosOz3da8sVG95rExSBkz6EbrmB/D+a+fgt2a8WfEbkIVRgxTrnTAUgbENEOUOYpZYqTSRKGAQ4BkN2A3YDdgN2A3YDdgN2D3x7CbAHYDdgN2A3YDdv+nYre4YzcTiCslhLwnuxUTimuqENVYY6nei93yI9gtnw+7JWA3YDdgN2D3E2M3doFYH5wIzGkWqFKcUOaDMEQjLYROkBLKhodjt3w7dvfP6+GxxUvFVKElidVouIjyxYzZJ63LuZLu19esemsVybzwYlOVBW8fb53y8hqNuRvuzgXSvq5LuHLMxya92pdbrZLaFBffH1GprFXF0SU+lQfrY5SrNgaT5Xl+aGybvVVrq7OivMjaXrU83ESlSb3X7cVTtcrHl36dnpfXcaURTypxej1YL/Tkut7vo/P51jzs2Gdgt8LPmey+98Fj7yh3ngujLSHMcaq4tN4jarA0jlpEMWA3YDdgN2A3YDdgN2A3YDdg958QuzVgN2A3YDdg9+dht/wJuwVmVHNBv6AfmeJcEanvAo4p4e/uMVEf0W71fNqtQLtBu0G7QbufWLsVkhTrwAzhCmknpKXOeeKJoxQlCSJKIe8Vf7h2q3eUdrNZ7FK9mc5n6ptMQM2zaw93067d5M7tuEi7i8PxhUSpmK7mm9BeLaa+l0w7NT69zsK5SrfDXrzvOL+f0prel3ry1K+cvxntHt21O2/WyJxr03Y3XR3vCrlOw8R6WuxXEFt3uqvdtpPMq/2xD51WaRpVWud8lD0MxnEz6uVCMszLUXIwoxE9L46N6WLVr71MNtvONXV6uHZzjJTWT1najRPLFBMBE2Jt4IwIJoxMhDJBJUgx42nClAXtBu0G7QbtBu0G7QbtBu0G7f7zabdCoN2g3aDdoN2fp93qrt0cUy204BTfS7sFloIpqalgkr5ehu/Cbv0R7NbPh90asBuwG7AbsPuJsdtjZYPiChnOXFA0kTQkThps7yMbdFCJoYhK+nDs1m/HblQ8oTOpJKHZ0j2Nr/X6PLM8lFbb2jgxqB8f9iilRF6+ULEoi8IL4nk6n6u50IeEr8SUZEsZ1tunUtfhbdtYabVrns+t7/SYFI9oMLn1KovRWq/i+MSaU2aOh1Y+QyNaWjWuLr9YJ+1VYdyOZpGep8rN+XIa62l6WjTjWstldTazaK1Oq8KWxrdjb1ET8aWNo0/oMeEYIy6fssdEEIOZSJBTWGtGEyESZIkQzgnJtVTEWY4ZAuwG7AbsBuwG7AbsBuwG7Abs/hNiNwXsBuwG7Abs/jzs1nfsFoQjSgnB9x4TLZBUDFONlaAKyXdit0AfwG6Bng67X5cM2A3YDdj9e2D3/W3I33HN/YK7v/z5vPvL71rcbWQgSBJkKMGEIeZ40E5Jj6nABtOEaoo98Y8Gb4H+f/DG6qve3cKndWumlnTffGlfTqG+uVVa1zn23dm4E3LT4a575P31cqGKdFqtthrr7fWYzdTiHT5kui7nRbFAspe9WlfKt9be7fvT+j76bpUJtstRWhcKM5lZXPQxbkXLkZlVFu2FX5WmlvV26jRPButOsVWaBFyOmyrvztdV3L+eV9nlYpL2W5VxtYl0l6Qfm6GYRJ0Kcw/3bqwJwlio3xu8//VJ+THy5pJ7xa3FUjvlNLbKMeS114K6RCQoEUQ6qsQvyTvxp1ctuPxw2B83PwvxTyZyB4RftYT/99u4/O84d+fM9erl+k8G/vNqvk5y94eQ3y7uv9WpX8/aHWDcI6T6H8fhf/5Sb2RzXxrNbqlR7/z1Gzu4ufxw352fjfhf+fr92/k30vM/Vk7+kPL+HHQmn4zO7sLwO4nL/Y7yk7f85BSPELo3Kc4bGe+w/+9/WjP+kf1W2ntZT1786aejgn/U3xClrxLg15zp6y74dWb6uhY+Bp9+xRx/1aR+FSN/Fat+XSm/xVgfFsx3CddXfOo7Asp/P8J6mE69TWw/Dag+SkEC3SlIYSyEVpTr+7f8KVKKMSoUFopI8l4Kwh+hIPx8FISBgoCCgIKAgp6cgqRPaFAs8OAVR4lk3FgpEuWdJZJbngQcFPXs4RSE30xB8+1pnMvZXOHQqFxm5f44SU2W45n2vVU5X2vuT7XUamT2o2JU3i92zU11lW3tartyOd8sTk4oa+u13Wb5ki/JYma8yZdGA3Qqfi/6mAuDUmYmxDqHwqydvdRNZjme5ll596LqnZcw9sttKxw7vbmJZlGjMk7Fm1pLxO3VZLkrLpcHdezXKs0o015uT63c/nbel9Fi2PyEEW53CkJCsuekICeFwohzoX1gRoWQIMk0YZgTKnHiEZfKaxGegYK+Gnh8Erv5rzcKxn991XJ+2ue/bffvp+WbxvOhv/dt8/mXvN0vz8d9bV9FOsASwBLAEsASwBLAkm9iCX7FEoKERoQh9QX9SLhEmlNKERcIEfXeafeCfERLyPNpCQEtAS0BLQEteXItEV4i6Z3jgVqPZGK1lFY6RC3BhgqtGSfY+ccHZ8ibtWRS2FemlqdSlUO6O7ktg57n90OaQoNi79SaG0IvrJlfVuNr+pJKh0K91leFZDJq9jLpAXaFsFimXjoFkt/Kyro3qe0yu17hW62I/wcAAP//\",\"7N1HcxtJoi3gvzJ7hIT0ZjELoOAK3rvF7UgLFLx3v/4GyO548ebONEkJ1DTYuZKJkMgkGRTq08lzXoIz0VZtd8A3m6TUmUxdl/Urll+PBb2U5rysdcp8qIajmxof6pN4UoGVNjdoT4CL6831RI76ld120Gq24FxUzGoZtdvr63Csj63P0BIIIQfPqSXKYq+NV4R744yj0EHNGb8bCgXMMIMkUdzIoCVPpyWvOHH/uQlwEuAkwEmAkwAnnwYnLMDJL4MT9AInggCGMHxJmTAEKCBAACEYJfTDKRP8I26C/8VNNsnqHtG9/7BeuT9g5EGQouxJrYyz//hVxPL6fStYR7COYB3BOh5gHdRJx7CFgDmOiYDaKC8N8QRKJLRTkt33IOjDB48Zfrd1XGdjZKIY0+6lc90sZ9tcf9VpDjZTep3pAgGQMqPSvp1yoyh3bvfxaTjc8qbOmpo+7yrFomSVwnS3lv5yjNq7zdJGpeVbe8fFigOVyubaznRGSY9fFrvY20ltU82sblmwydQvWZqjw3StcMsk+cxW9yaNXXdE6mPV28xZmbF6q1DbFaJUeddv1mK22V6i/DC7FZ9jHYyiJ7EO8R3y19cZ/w88mCcaUQmt99Ixh5UzBnplJYHcaiOtBUTzf12CCOARwCOARwCPAB4BPAJ4vIAHD+Dxy8ADv4CHROxepwLBPSnCqLijx907ICcYf1Q8yI+IB/nS4kGCeATxCOIRxONh4gEUtNYSbxFlBjmCNNaUEavpfQcTYqqZgvrx4kHeLR79VmVbEFM53yul91WXH97IbIJLtY3N1BCfLIgbdzZumFpfFmoUV6I15DozJafy8eym87qo5vhxcCs0uWnaaHy5buvGvnkXJsqfBodVdQEJzzTa9DxInwauqf32aqL1OXOqrReuO+dnEmeSbG14uI5tfWR9ql+dpcy22Il22VR6Hq3IviuW1fEqaeyT48lO/vk54iEkf2Lx0B4SqzECCBoMhCYWO+808AhiCiAhTCjCqPmi4oFAEI8gHkE8gngE8Qji8TPiIYJ4/DLxIK/igZnghEj+Ih4CUIkgAhjef/JR8KA/Ah70S4MHDbdogrMEZwnO8uTOIoz2EGnIOdIGWukdpRoIzBEjyGiINAIGCPVwZ6HvdpYcrlTqhxoYd5awz+UmEx173Xpc7dcj4zd+qUrL9lZI3Oe3frF4yxWX1Z7G3Uxl2AJJqneoXDIrpFO7SjdTWjSv6/G8G6E3b9HksqI56yzV/BL54ilVHOXX3VV7VyYzyyd2MXWXDLnBc6npxq14MsCYbQ+sV+wvPM6hdXLQ1dOuki9G1cEmBTPF3rQ2nZ73dlD7BGfBhBMEnzlZYgX3RCpAvLSKOmqFpJpzpAhQxhvpCMPKouAswVk+2Dt73Fh1cJ/91v7x7dvrG+qs1GY/XR8C8wTmCcwTmOdvxTwSBub5ZcxDf4McASQZ5YDjewUKIAJTDDEkAmIsKCcfhR72I9DDvjT0sAA9AXoC9AToeXLoURYBhYTESGrgIUAUQMCtwNhLYRzhCksruXw49LB3Q089rl8aVbk76O25rrCxzdQU78arMyjUeyBXXmejTZYAcOvuaCezuEzFsZ8x3RY5dlKN/rnUO7QqcHk7Vg/xbtwu7dL7Gzq23qxLOUSVcVLbY7lAw9q6rdtNq1cwN6R9CcfbwZzjVqeKxOS6acWT5nCDa/XpSg3T5coGpHpjNzzQ0oTQuZyNms1eh6F1t3BMN+efAj0So2cO1DjrrLDMQqwRgN4y54EGBCoMkdASKCwYMy8B6QA9AXoC9AToCdAToCdAz18MelCAnl8GPewFeihnUkIs7hvRTCIp8X1nADMOOPwo8/AfYR7+pZmHB+YJzBOYJzDPs9+bEpRwYIiHnBCkDRacKuko45ogrxwT0BKJ2cOZh7+beXhS8Dt/Y8ecqg4yydpnK40Dqo6rtNLbrbdzWhAYFsgcdERa15LiajJOTw+Vba3Qy+W386zbznqKiYNXeFOihXNKr0/2TebJNXexWUzapfwtXWokUUxtmZSJpqJzhtteG4pRnV5tnrB9Jp6UMF720aFnatMMXfrRdmNjuYKziSwfL61DOVe9oua4XNjk8p9xbwpLAJ+5KUZIqTlmQEGnDfWEa2SEIgoo6jVQRChItX/5/6nAPIF53gkvrx/Cb+vjYXM83J/j//k9fX8H2m5/XBz2f3zHDhoUNChoUNCgoEG/SoNw0KBfpkH8RYM4FIxITtg99gMZFohLigTFAgr5UQ4SP8JB4ktzkAgcFDgocFDgoGcfSQLcc0wphtoqABxRGAjlhICSYAsVA0QwKB7PQeLdHJTWmUOzt+gXChTTctrWL6tCnh3EsrpPNgY3WPc2n5XqixRuRjteJy57kYNe+VRApyLrVIuj/qB7WVzRrB9nR5315rZV40HmTQ7atGMML4Xxmvfyx4W+VrqgWB+eBAFj1VlUdm4U7R3Ijnw1E086STbprqqNc1+dpqKRmY7K09MKZUZJV+RYRuf3+53O4fbRrj+HgzCTz3y9SzFPhbGIec6Qg5IATZ0xCGBpIadAQqQM/qpLSYGDAgcFDgocFDgocNDfgYNI4KBfxkHihYPufZgCIAZ/A98FQARjigAQiHD64XZj+SMaJL+0BsmgQUGDggYFDXpyDfKOU4SABlJx5LAmCntmIQHEaq+phY4jbwV4uAbJd2tQo1fIp2bzhKePMlWdMVOEUd1GzSY79VrdlWr7425bO5U6nX4xUstkPruV6xHNVJqVwmnNmzIpTYp2OsQYNuLOcjrW10Hypxo0ut8Bu0yibHPG50NPCl6s+8Od3V1zND/bg4Uo7PtLg6r8Vq4v0TmeZmqwdrwtejd3OpAm7UGaXH0drurrEduISopPy0OVuLnZiOUnaBAjBJIn1iBurCZKca695EIYhBESQBtqpCJYIWS8M9yEcFDQoKBBQYOCBgUNChr0vBpEgwb9Mg2Sdw2CAApKMcAvY1eUEiokJ0BSygnkH+QgDn6Agzj4yhz0crrAQYGDAgcFDnpmDjJESqGgVl5bIYkATpv7uBHziCFisaSSOMbdozmIg3dzkN1XU7tbbA7TTSaX7wzsgNw2t1y6P82sdt3i+jAbn0uOFNb5ar9F8+k8H6ZqzeUsNy6kFoV8ejEfJIdOi0TpVpwUG3NyWzH/diUQy6pqR+eL22wZTA/UzoaXnOoVJ+1qJSPmrXwRLrv7daNROmbiSVYcl61J1dWtGw+0AGI+qyYnO6bDXv6kyRRM+5151uaylU9ZFRdYime+K6aghEIarDiFlnrhAWAUcSwBJcJrDKiRlhoWOChwUOCgwEGfxUEkcFDgoMBBn81BLHDQr+IgDl44CGGAAMQI/wa+U4owYohBQQjg4oPNQR+noC/sQAGBAgIFBAoI9Oy90MpYwaDH1HNy7wzCmHLGoEUWUy6JpwpoJvSDEejdArSn/bZe1um42ylMb5nKMLK9y6zVYhiUkkY0XiXrwqyzTh+LpFi81Io8RRvtVpSv5Wbzfbl4uQ6q5XV/HKdoWZ64rpxXm+n+/GYgCBfGrDBqjCrHwXLVqFb0sX0aja+L+rJWLXCzb+mhlVJ3EjWJp5mGzaWO3J/oIDFTvj5RmW2CJL+rD2/7Rr/ULInruQBy5X6JfEIpNESMiycWIM89cBIRC5lW1GlrNGTSACOt8lZSpaXx7KVlIAhQEKAgQE8iQOLlQe0ZBAj9oQr/AYCC8QTjCcbzTuMJwPOLgOdFdwiDkFGKyW/gO6cCU0IpIoRz8VJi837dgd8+7jv3P/Nlhef1cMF4gvEE4wnG88zGI7XHklOGqcYKUAAAtwoKSqC/3xyWWGLg8UtS94HGA7+9X3ngvlM7TXuFfYd3UdwfJUuKesVxtUtM70x9YVQ4bNeLTBTt1nug3MAcqz3gUX7ZWZ14fT4eLMC5f25thucyToHluZdMYP1PlacVxfmWPhxy7tLDl1t3veyAybhVTpeWxyrPn8/LaDubx/V5kmp125kk2+YwsR2v2uCYjhYHvam0Gv5w3GZZvY1gKZPPaFR0/UGu9poverjyMECe+dqX0khzxpCFVlDoJfQGaAcpkhQ6QZVUWAoWOqGD8gTlCcrz31CeEPMJBBQI6AEEBL+FIfhfhEDw2wsDISC5oPg15CMIgYIChIkUBDL6MQb6OAJ9YQIKABQAKABQAKAnByAntPPQ34viHNLGESYM55YrBIyUnhrGlefiwePv8N38c2j2ywdaqPebcn8+1043OVm647Fevq6tlM3cebwfEDtxLUz7qHCuDEbNHgfFfCLiZg4Bcjntr+Up4oWMvVUXS58+u8b6/OY1rxFr3ZYjT9Q6TfdVZmn/sh0mbFCEi+5hkiqLGSuQRnqYHZ3jiW8O2+t9EcWxcaOLHDamq0UXXVr51Sh1jVu7MTkB04+ZyLU+hX+4YOCZQz5EOYMpgZhL6q22GgCKmbVeQY6NR445q70P/BP4J/DPM/EPeh7+oSHkE4QnCM8DhCf4zi/ynRfdEYIKKtBLyIdQwaiATALBJOTsQ7qDPqw76OvqDgq6E3Qn6E7QnSfXHYQAx44CCQiHzEEDuGOGMcHvMQvkuJTUEwkfqzvo3bqTvaZa090p1qNWGW1O6ezUbHJuck4Iu2TdbUZdbX07ZglZdNOj8+Z2qRbb+eo1t50v6DS1qBznbo0nhdkV1NrtWsHVtyzL3ux0zm0Ec9vq3t/aLQNO0zZbHCqmnoD2eJ3OubybZDBWvTxwufsVrmbnnE6yXLVrybnes6pQQoWsnRb63e1oc8mviqbTu0R1sT7Bx+sOgZSAZy7xsZZzzZFzxAHugQFCIke4dYQDhrk3FnHnFQ26E3Tn/77p/zbnBL8JfhP8JvjN38dvUPCbX+M36MVvJCKQAwbvfgOhpBAJKCmSkCDxsYEu/GHAwV8XcHAAnAA4AXAC4Dw54HDPlNAaYgAYYQBiSyyk1EHFPZHOIU8UVZw/FnDwuwGnLNkmmR3grBCvd1zMidiMJymbY8tEtRtVP4iK/upljVXa1wTeKpD52hWVppeTOBQLk9uoUt+N2sAm4lZbkhZo0n2p/Dbg9IbRqcr6i+Wqfaw3b6NaZ1CIG5cb9KX9VPGcBvPepZOgXOkOOBW0HO4gyPdK23bkZ6CQ3fViehuPR+fituPrxRrbpCpYj2z8KYDD4DNPtGMDjYGWGKOcg1YRgyWxwAjMCIPAcEkdUcoGwAmAEwAnAM4PAg57eeoKgBMAJwBOAJxnABx8BxzMAISCSXmf1KKccgoYQYhzhMjH/IZ82G/I1/UbEvwm+E3wm+A3z+43TgoqOZReOe0RgcxpbjBgDAiMsNIQU8HQg3fVybv9xu+jpaDZZpn1NtPGEV1wKjF8aWvHiVMlCZb1pIzgvLdZSDw6Zuhomq8fd6MN561G5TTg515Pt+LN7rZqtbW4ZpqMnLpvdijn4hZrpw7FbS2vKc5F2/F5Ox7gVnsEoDh1QI121tXcUqht5T6qXundKqfWqBN1UrFeZyr13SGJL6Vhddw62s6pbCb7NDkMszle+Ay/YQA+8/UqiLzViCDrJYECaS8U94Y7AZTzSAtHiMKQweA3wW+C3wS/CX4T/Cb4TfCbL+835He/oZgTQdhv4DuGgECABWI=\",\"gAomBPkQ4NAfqEmmX7kmmYaa5MA4gXEC4zw/4wjuCReMWmCIAJoy5DlHDksLlFOCAIE5tg+uSaYfqEkunivlazyOdBZhcTltloty97omuUzqBItrTuq0NDeD/Sg7bowHtXq9zUV7WauMTt1VulNBl+Iu7m8PqNWzNZBPi7i8yjc3kzchp2uv5cz0mKPmNNjut4NsjOutvt7HVeQn+2LUTqvKKmXrg24mnmaqfX0aLnq8264viW2kizVbyY9rx2y7qjPr27ko8L7g+uejOH8C5Nz30J+5JlkwjgwmCDOLJebYQW6IwlYrcZ900MYLKZwDAXIC5ATICZDzGZATipCD8gTleYDykG9hDesXOQ99LULGnHNEBRb3q1aAMMQxwhBRAbBk8GNVyPTj0POFmScgT0CegDwBeZ4cebBwHhHjkTBYcAu1FY54grC1UkFmGHGOkEdndei7iaeyinpad1KVKM6n+jKVGVZcVEpTwEswayZH227K1NQeprv1MV3GJh35fSHVgmDfQYv2bYnNODV2x73pQ7QrT6qzXvfm387qNLvdZjZp63lxUifJqDrN16azvr1kCBov+rksuS2XdNUeTieteJqJTzMC2Ly2Pc1AZaWutqhNJdtVqO5Sl/qlrfY3cxhSux5/wt45hUDCZ947F8IwBZWmyHiMBYVGGmOZkJwSq5G0hFPDYKhCDsQTiCcQT8jqBMUJivNfUxwYFs1/meHcBYdASDAWiIj7ojmCEgkJACL312PyQ37DfiCqw75yVIeFqE5QnKA4QXGeXnE8YgRRKrDFTnOtAERcYSgI1oY4RbBSgkP94MYc9oGozvbcH4plKn+wu0O0OcW3Sm904ptzvpUrt2uz6olc4jFP5aNWvayVa8yLKhrE3cmuAxvn8aEaZ7vLdL0mopbO7Lo11B9sS8u3ozpcxumuS6910SwOW7bN4W40zbgUEE0+i3MHJQorg67rU3yP6sQtsdkkfpzC63K1XvAQleqFzm1Rm8drez1deySxjR2YjmL9CY6DOJP4mSetoNQKSiqhcggaDREkCCGmmTBWaGkY9c4bERwnOE5wnOA4P+g4PER1AvIE5Plk5EEhqvOrmIe9RnUIowRDIim/X8qSmEEJsRCQEIo/Cj3wB6DnC++Wvx4uQE+AngA9AXqeettKAIyFZVoCQKU3QAgDMfaAKAuxJ44LThh8OPS8f7v8MjJsOG2OydDA+TaqlHfdos5v4p2C2dK8Ndgd07Ne+4RAf3ejaqbFWG7rAoGDrk1vme5+dzrlGqKd2awOhSNNRpc4Sjf+tBy5FcX50eQ265RZeVSftzKWweIWR+JcbqWaDcmKVZe9wU3t4EveZ5Js06HzpLtpDBF13fy1e8xGk+Wo2S0hNu4ouagmC4TMfnQEr8D0aOihmPFnXrfC3HqMtYDWS+aER8Ja76XEWEBMnaUcQSpdCOwE6AnQE6DnR6FHBOgJ0BOgJ0DP14Gel/lyKiRAAkAM7/PlEBIkEaAQUQ4oxB+UHvQD0vOFN8xfDxekJ0hPkJ4gPc8sPQwRoTxkyknLqWCUMHDfNVfEMMKY0e5+X8ayR0vP+3fMK33sZ71KJSmKNkzhm9tezGS9itQRVFUmvx1UbxXZ2A3FdNvKrjbnzi7VbsmZmc5idTrSi6mm17Q7KmTJ3ndlC6x0P7t8S3oK6YFKL0t+kGv7aLnfzCFMV/rdxnoxm02WsYsHo8WokBu15rNMkplmrT+n2Km+i46VAT204rm5oWq3u7+KiM3roFdRo/pxK37fT3+49HD61JEeDC2AFBBnDWWKE6gs4xpgJZEVkAourPMSqSA9QXqC9Py1pAc/j/TIID1BeoL0BOn5OtLzMnTOhECECUjukR4gGYYIc8YlIZSAj/Qs379yPuY8r19rX1J5Xo8WjCcYTzCeYDzPbDwEESmZVN5A5z2QmmthhKCMSqAR1tYpxrF/aPnO/SXKe4XntttdFvNLa+hz52lf53rJejr1qcugfupkK4uZ5bC4Vu1UZ4mXNdec9mEvmpe79SM6lHl8zJ12Y3+qduVhb9aq2ZH52mjca/2Z8PSiuDhPDaummIyTOT7g8mKYntal2sVVNbtlcH8Yt+CmVl3MZt1dJslnboUlNFu56p7XeXGOl4VF3Mx0R6Xd6CY7l01rfkiqgk03m8r8n5/SrywIfWLhMV4D6ZF1iiOkKYOGMcORRNgraoH32DtmbRjKCsIThCcIz6cIT0CcgDgBcd6DOCiU7/wawoHfX+5kCSo4oByhe/kOkUwyLimkAjIo0bv9Br+8Gx/xG/z7R+QL+s0fRwt+E/wm+E3wm2f2G60cAc4owohEhAKPiCfWY2MpVYpwSiW0zJrH+c3Ld893+80hncSjbHM3LaQzh6I+0vkmlzqvCoMoGg5rUcU4cqkeeotKO1PKpoqpuCo7k+6imhSSfuNIR+3MZDSU82vzSsS+OpmcVLG1nrzhN62oMMsfR+0rW7f88CyytNZqb1blOE5dx5lRt6ziNtzn5/3OSU3iyTDW52O1mhLp426pJuO0mVCSXPe5QjOyW9KdLY7Kb6q3GgKP9xsBCIBEfrrfQPR57ckWGyER1FxgrD3UhlnoGZHAIGYwcwpAihEJgBMAJwDOXwlwXk3kSQDn92fvIDhBcILg/LDg4P/fZ4LgfJbgvHygf4McA0EgQEgw9Bv4LiiHAmOBAcWE4A8BDvww4HzRQp0/jvYfAOf9/8r+gPkEwAmAEwAnAM6jAIcqd69K1gQ6IzDhVmMGoJQAO8wct457IpxmjwWcf1emI/8t4CxOnb3Cjct6na2OcKYx26Su8/YUiP7iyDK7LmabZW4LbD2eq2o6VTGzYuuYVC9Jpgl493Bpb6vbVe+IBIg8iQRZl1q75luAUypd6HJrrnuUa5zHSW3RWqROPT0tnvuyHI08r+a2RZms2jN0D+BQM7Yim0vKq/VgmJ9VL7nTVOJNt6yyDTrnkzU7M7GNJsNk/28AJzdtiXObZprZU6FULaRTXZPKjE7Nhu1uTJzbNqaXfbbUPke89+8AhyLICcDPDDiSSSiUMdhQK5Q03BJNLVYEcuY0plgJSplxAXAC4ATA+WsBzhO16cBXdrH/wjSvD0//A35/wr+/Sv5mE+9fn7HBd/Ry8l+mPs+EPAF0Auj88TD8bKDzl4KaeyvOvekYUIIwo/f6Y04gg/eiHM4hYOw9UvPt/rub3doezctp/4Ab9GG4+aL9OH8cLcBNgJsANwFunhlugCCUKYQoUQoaDjFGEGvuuTIGCIOJtgQKSB8LN+jdcGNoJVUqAn+o+AjPWsSs0kV4XO8UXbS3q9O119egclDLckXmJ51yrukbqENBszE7t4qdme90yvvLvtFGA+637dGU2TZZZd66OQUpuY620aLY1GfNYywzAOXySzeZXhZmbsdbOVjsyuZmzQvcLBIb5ziixe0oMelrf5/L9kzdJOpsK8V9f2PJdneqTWa50ePhhghGEGRPnbxxgAvNmSfOMwIRcNQoqSByDnONvFD3pU4LAtwEuAlwE+DmR+GG/J4T+hVwIz4KN/APG/hZuWGPlRvyO778XeTmFfjA38huxB8H+Cm8QX+KNxD8/hXz6XrDv0PxNt/gD/DNf/gb/4PfoJeD/pjf3LtuCGTs3mosMPkNfJf3l10IQCEEQpDin/Eb/GG/wV/Xb3Dwm+A3wW+C3zz7jpUmTBHjpQSGMueU8FwzpZEwBFuJJePMYf7gm1P43X5zoJfjha56lC1gs5ffiEH3eJlv9mZQVkoeRzGx61PTJDV5nV5K9NROx5njii5ctgHQJdlJND9gPmzcQD2fKpRpbZ/P/Xm38ctcecalsk3WuJQuXZayeJ7ZTg4glVxECV5JUugOD7nxoUjwOH2fK68X69tVs1c6lCLWnjSv/Xwa2AZJRfTgt/xYaO0VPcwTmBedT/AbDgh5ar+BFlsmjJLWYOGJV5Bwo5kymhNhHbIUceJeXrwEvwl+E/wm+E3wm+A3wW/+Sn6Dg9/8tN/gF7/hGAHGIbrnbyBGCBOKGYNYMsHFzwAO+fbx8hvy7QvX37weLjBOYJzAOIFxnnqkSmjDnBGIGQkQ9BJ7S7jQmDDpmPGKaSyJho9lHPINvBtyJud9NB7zPstu9yhH57vBrZUchqzUVCOSmqS7M5+uT2ed0b7tU72YWHJtd2aIGJRinWGDLQjvDcwSTxvdTQOse2CVXxXfCuIUOla3be6Ke8l8tOuOeyvYXW97ZjuLxgdwzizE7LSaC26AvAdxprCXs7PhujJu+pmppAU+7i7n6f7cOGeZUVy4Do9YYdO/TR4fxBEAUQHFM0MO0MxTxzRhginjtVQYM6a5Esog5rXQGHhpQhAnQE6AnAA5fyHI+cFtq6A8QXn+VspDvoWczs87D/l2r8QhmFGAOZCQ3UuNiSAIIiEYRZThn4Qe+APQ84Vrcl4PF6AnQE+AngA9zww9QkIoqCTCaCS050Zhgo3xXGFPhYGMYUSos4+GnvdX5Zy3MepXy2c5rw/T+8OkM/LZymZTHdwurLGPD2BJTsmtjLLtTCZJXP7UGchJ3x0WYr3vaLXeV7s0Y5DtTQ7j0RB2m+PBeXN+K7ETWSeYKYjrtrFc1tO8lJa6tp7uaj3qcUrSiZ3a+jbJznjjJbFTtYna34rJaTbdZdjark+o5YhY45LdFWuisBMqXW4eozH5DOhhQMJnhh6NlZZ3VYRKAwsU1UgApqFXRijNgHTQQS7DWFWAngA9AXoC9AToCdAToOdvCD3wFXokZBxieF+vYpQCRgSiEmPBwU9dySIfZ54vjDyBeALxBOIJxPPkxMMdUwoCh6hi98tYnCnvNHIUE4UshVBa46TyDyaedwNPZhv5VlLrDYaLuN+V1iSXfLueP8G43D80aoeVihPNq7lket7m+E2V+GBEm1WSrTcv+xq9bMhMjja39W5jy80MnHfc2a/eGiPPgl5yQ6yxyWbtvsptIdJ2DnpNX5g62u1PhuNMbXQ4i0GT3JM8WzZZRJ1e6eLUJr8cdbNVkXQPubE4jdPnpV2sSy2sCzjHdetTkjxMSvTUSR5mKPdcUG2kgwRiwYzyXFKHLFD3FA83GIEAPAF4HgU8e7dL7q+mH/Ze/OPbt91xFa+yamWDIgVFCve+AhQFKHosFME3VrQCE72LiV6QiHMgOUDyngZCVLKXXwFIMPyp2mX6YSOiX9eIaDCiYETBiIIRPbkRYa48NMAhaxTHBhvupacWGOIApJwCI62Xkj/WiOi7B8+P2mz3pfoso+uLap6sVb03zSdN200P7SE1WBeHLMrT0qSz6upumvCRGvTMtURH/S0cDfmyOnNo2xZZ0/PEnmEhD/Qq/ae3vVpRXCi1Sv6UQqlyJe9oezJyQ8tUG5cXUbxu4JOrDlF2dNqw9CWTZJLdgK1Wu2l3163u1qdpLT6kBsTXzo0OyIwqHTs7trMTuezOX8NHDzciyflT3/aCgmpIOXZCMmcw9cIIhjxiDnHklWCAqjsYBSMKRhSMKBhRMKJgRMGIghEFI/oRI6J3IyKACYjupZy/ge8ccEoIZhxJTtnPINH9M/QxJHr9nH5JJHo9WkCiRyLR/wIAAP//\",\"7J1tUxtJkse/Cjf75iZYisrMeuy7uAgMGPNkGEY8mJmLC6nVAgGWQEKA2ZjvvpHVUndKnjvbZ3t2me2IeeX5UV2VlU/1V6nViESNSNSIRH+0SNTrFV2roXDaF5RHU4AFLKgHAJ1gDP/QI8XY/qYvBeJG5HNFItuxFzu7+cCcXBlcffhp53m5dzWi3a241xm+ObvVdnmDJvna7eXWs9/aOVrrheNwd3m6u17o58HD+31819raGz8+hOM3tH25c/m4fX39+KkfVc9bHfd88npye/P+eXT3tPwcrk4OrrefIHbD69eTfTxbXh+5zitzyxeJ7tfdURsPlt+cDR8Pzq8OznZudvz1VXG1P9ylcetkYzx8PZmcHRydrH0PkYgs6Bf9TTGy0Rhni6hz7PVy06bgezmGkNuOaecdq9veeGguEjUiUSMS/bEiUZs1kf/l/03jfTL+HDmpUZu+VG1yjdrUqE2N2vQ91CZq1KavVptA8fuJrEZtESIGfhO1thTBEhgbyGhN/qsuJbkvvpTk/ryXklyjNzV6U6M3NXrTS383EQajLSBZ3+tB4W1PewxtcAEAO21rc+u67S5+20tJ7rP1ppPBYHAd7WXc2LtYbt2/edfaGd9M7g/c+/bbdv46Xz/K4XEvHt1t5G08LfK94d7hq67beO4Zvpo72B98GDznrzu3I3d1ufth/Xp8Otz75JuJNnbMT3d7bXpotTrjbv/dq3zTLAdw+fnz08ZNcfr23fHB89NPy74DF9uXa9vOvovuZGP77tjDkX6cnER/v375021/+fVwcnRXfOivx5O3N2eDx++iN6G2L1lv6vY0tn0HOrmjdg6xbclQpxvBF6DbGhz5ru2FTqM3NXpTozc1elOjNzV6U6M3NXpTozf9Q283uUpv8sYZ+h+tiAAivxtbk48A5mvUJv/FapP/86pNvlGbGrWpUZsatemFq00dJPJFp2O0ia5oOxfIBaNj6ATTjt4Gb2LUqaf4hmqT//zbTbsP462751N3/Ra7+fr94+2gde27T93WQ3+XPmxfbLweD4u7h/YB9N727fJjfj86MevjzfGT745NZ7JzqM9Gx2aje4KFdm9OTg+ejz/1g2frTxt3k53Ts37n9GrQ70d7ftp7PZ68AzqZwKvLs71LO3p/Puq6h1O+3TS5H0922nh9f3q4+WpVr+VtO7JAZwcXx7B/vta73Xx7PAzbd20cfpfbTZHQv2S1KZiQR34LuzdYQJG7ottt+4hdH8B221GHot2h3DZqU6M2NWpT8xW4f2qRyKdDaCMSNSJRIxJ9c5EIGpHoq0UizyIRETrwmtDwu7Q134/XESka0hG/RiQKXywShT+vSBQakagRiRqRqBGJXrhIhB1jPbmcDBY93w6219EdMBpjETsFOejGdswxfFuRKHz+e5Lc7s1g/Kaz9ty+ur15dXEId7Csexv95cGw2PDF8W1snQ+PWqvj+83LYzg8P4o/r41h402xe30/XKXr/s6m29haPX4a/ry6erXz7vndmv6kSHS6fjheXb8+W79sPbxfvro8eRodPm+7/daH6964ex4er92k23l7fxdZJML996OfII+bF8f+5n3vofem/9Bdh+P7853jO7dv3myMl9cvN38ebm9/e5HIx6gN0UsWiXy00RcWIhY903YdjK4IEIuuLzC3eW5sF8imgt2IRI1I1IhE/2oiEb0gkSg2N4kakagRib6PSNT85NrXi0SBRSJvXdCarGaRyBhjgQJYa6zWMX6NSBS/WCSKf16RKDYiUSMSNSJRIxK99PckFYUxvaC7bUOuB8ZoMhF7gV+v3clzMA5Dm9B+W5EofrZI1Np5gBM4Olwf7F9vd/a3VvP++dvu8PR2a+dy78P+wZPbPbzZgocHO7QmPx1+OH4eXfVvty6KtdvDDb2VD6+uDy+e3vXhbPkibl6MRpfj/FM/uLaxcbf85ub2rn8y6hXH7xztnr0Pk1F/a7h1cLUzHhYfrjZ7V3sPd6MWi0QXF1tPrbP+8cFFq3e4Zgdn16dP58v0eK9vw/tw97O5fjuYPB3t3ncuvsvLtCnaF/0ybZN3O9g11NHtLnYtYi9624OODh4JdI//VRd5uxGJGpGoEYkakagRiRqRqBGJ/hVFImpEoq8WiWISiWLECN4G/rqZs1pT0J689T7E8P8TiX776w/3fS4gf/shHxXt+4IzDmrEFR1WgFpgMoSMrHIxnHO0Dbv9Xn9G2RUdV8C1NDFlo4o6MpXS/4r93aGc0uRryC9APiOTaV7edCTg7ZhnQoY2M6C8NxUDHzFGZ2SUoZrBlcWRYsZT90p7W1MfMeAyo5VBXTH0OyMRZuiUDlBTHzM+0155X6/NfMSYkFmjyM3GAQXzT4stbTNDGbflhIKSNkBoaZOhZzuZGAWF8xTYzNgMUfkQphTOWRx9eh7w6qKrGVhgXGZ8ZpzCWDPzFmfKZ6AzYxUZFNTCWBAzxMxEpUmOhfMU6oxiBlq5EGtqgYGMH2mVI1sxcvfiioaWBh5JRwVzFCxQmLEzBGWCrqmPGGMyAOWgZsz88zD5FDIVTRDU3PMCz8pipp2K0QsKJRWZYsdyKng5lpwXYAtcloZTPsh5mXkKgSPLekXGCspKilpIGVBmg7JVbDHlJGV5XhgzS8pZMfsFhjhKNSqwVDFzT3PsxYScW3RlK1LSnpD8xVCmg9JaV4y0JhL7uTaZ4V9OqRlpS4z8LJt22IGtGGlJ0jwOmsxqpat8YOr5gF7RlPbE8rpsFXmmnk/FWMuZTsMs0u38OIbjjsexSltTMSIblBTi1HttlcXs/NMsj6RtZp0imM3IzT0NUhRYw1Z0FisGFhhM8RtU0L5icGVhJGTnZgpsEBR8RJFjP4o4m7efn5NLMR44h6HzFTM3judd01wSFFUeEubHiSkuHedVcFgxchzU03hDLWpGWFgbYvJZn1FUvsr0YWFtaDhGUGfGqABBUJW/AaTYtRn4DLwKVUVgiuYphFTLvDJGPtEICnTK9iEDJzIrU1ZSLuVD4myPSIJyH1EEGRhlg7SEFxQmX7CUISlnJBUkhcljDNcOg15QcZ6CwE9EI6I8WVVLLAUNGV4kOCsxkFjyGtAcEcZIu4I0P6bUaXgHlPFOYrX9kXM6eI5Urll2bjQjsHIDLFcIZaI0LViJpdxPmuuk1dJq4CRmZlvgFOg5N/MLGPEecB0KcwYJEvO8BE60QWFl3ihChP+AS7O2XEh8FdpRhAhOQ4QrCWeYWDEoGE6QqRHg4oZQMaLkMgUtrbnU8GRNFBQsUJCZyG7hq7BlavpEWtHAyQ1T+bZBmSoBMkWSSmmC+wqrQhTzWmAs28mS0ra2k5FM5D7WRE4AtvKaqOxsfYkqS6nWmSblXBQULFCUxnIqRCMouT6gFGipDPhZWcKqKa6Y1BJar4yFioH5WdmUcpHbYohOUHOzSuFvy6bJY00Jhj0hlVNuYGclF0WDXVImzdxzsYRZi4YwN3O0qdnj6FcGsWLmnuY56ZLn1Ex+GluIYhyctiWUCrODmgHJGB6HszzUTSpWLWPJWPZfIPZfXVkShZ/gtCxZ7jkUzYo30vx8ki9R6buzQEea2xFMrS536BkFFUFS9bwp5T2TEbGfOAJBoaRSw2gCp9oqOhNVz92kOCd+ojUqRisoIyjUnJBt5LGqxJIoW1E25RXiJo/3Qst5uQUqpbxUwOS8vKRCOh9SZq2ys/YjUUFQXHSIC7nmg91sXmbOqjYVHeDCqkHZyu+M2OcZQ8hM1aCiEftshW+iMrNCiKZu50sqpj2MfFyJsxY8UTBP8YlGsz/E2dEuUXJWZXvJnoXK6nrmZoFxfLDjttm5ipE7Q5CiIR02TUirQ5Y1xJRccvV0DkFUoazgJYQfQ5TaS+tqiD6GDOsEaMVIRkKOj4jcfDgVjJiTFRCfR2nag5OvF+eEyRPFZxA+0igUxnRz6+Mttjx18ioKZ3FzC+Tew6axSIG0gpuHOHNSRlrpsvMoIS8hSt0q8RY7K+cubcXbZ6YnEY1pi+GjraEUf5gy1XRSpTI6h5R9oTYqWj1D6lE8HzI4ioHbg+lBpJx1kJBl98XICXhaXkooLkAhxZ1VgaQ/6XmKe15MGk8QzwM5q7JhT32oimXtmFIoqcBbrLnzmh1+phQJiv0cUix4FUA+sfa8wJ7HW8xlW6GWY1lJpSrDUkhUSCSo2hPSsRzTMQG08l6YC7yg2KlSZTeovJFrrEzPxzJMrsDFXXmNgorzFD+R9SxlowxTLSg+TunUMXJFBkHBAkXTLGTKDmdKoaTK/Jki1UU5FkmqrO4uHXLkbqORlJ11CkERCXuhlVRsAfLsOaBBWALdAmWmVp0eP6eUF1SZ2W3yiWntmlLS9mhTTYWMSAUrqdr2wLbnNSJ3zhGET5CWVLIEpQO/lrYnEBTXwcCBxuKQtBehoBBmshYqa+UTSVKOu3XSnB80yicaSSVBQ0fuicJc7raConRySTlJGS0sQbXt0zFI07RYaBlp5CWV5Bpu1mBhrCCosn/ikNQqyt2mKKmYZGXDfh+diCGjBVUeHSHJZF76hAFJlT204f7YOUlNbW9Sb2/SqYQVQ6WlvQxJKslW/FDu7cXsjRHUVE7RKc0bYS9jJVXWRMeF06PYbeMEhWXFT+eE6RF0SnlJlTtEfGyPUcS2CRVVHmdjOhyTik6OFSVlk4CRnghGjGW1pFJnp13qcaPYIQuCgnRWYCGaFEVZ92vblz0uH7z4FAcyY1qSlEmZKZ2LndwhW9vepDUa9hztZ0LelLKSSv5lS/klyDXWtrc8FpZe6OZjyHpJpUxuOXBV1GIfbZDUrPfmM7YVnmOjoDCdjVkeRmVANiS17R37F/dbIYmVsqY5kFRqbgywF7og5uVQUjFVBf5PGblGR4JCnSjgPDFX3Z2RVJKF0PP5wnv5xNr2nvMEsj7D/VSca7qcoNhzkLMJZ0xZa52XVBJoMJ1Fp1LqlAqSSsKLcXyGtF7OPkoqVQXuYEiR3EevJeXZqqTT2UHXYwmED8g+Hf+sCq5yruqcUkKe45qS3mBDNfN6A0NqvGJaXFAWK0OhRMocginL1wgJpCzVHKheYV3QzQKSWmqWjmsrWjHhMP2kj+OU9d9qQ6xAeOFJsuWPB2qPc3PjYJoyhXRe0K6G6qWnjzbSpwysNhkUI6GAEKaSIAZlZk0b1FvBXYNOWcpwnPuy0pPcLZhJSKBZy0SvZwhUH3KWlS2pMHwyK09dVG+E5eRUquOsYsLsczmqN2KGYIoO4xXF6kHVgdKmxERpK1JHjk5AMA9xL+S5A3Clp1K9pSViuKkyKcicrsaxEvEpuyHHNLrpKJX5bEoOgTdUO/4ExulqVe5jxJeagp8hvkJ8Stw0dVLnqukG+TEypDqRKpO3lYXj737S7FVgIeS3r7+zvPgVgq+5P/1CvjXxPe5//TNc9Gq+YtF8xeKP+IrFP+gbRNM0k/3wn/+2srJ0tLm2sb+p3neXesPR0tvD/f9Yur8sloaDIv3DVv/+zaSz1B+ne8SXk85q9QdqaWXlv34d/GXpdbqmvD6N1D2O1O1ZpP46+HXwGVF82B9cHAyKpbVZQloI5mLw0B8NB9PY/bKI5imUU+yP09rGkzwvxuPhiCfQ6xc33aX74fBmvHQ=\",\"078uln5pv78fFYUaX/73v/9OJqt2YnVtf4VB/tMf/7r0S6/fzVfS9eaVNNon/noR/7FcABtitcppK/3pla4l/jJHny/dpeUc3hTtcbE0KnpFWgSv6pfpVpX787tP/z+qzo9pt3uTm5ul7jCfpPvInITVr4MfZi7Dt6qnDlc5wQ+//R0AAP//AwAc3y/f4n4PAA==\"]" + "size": 173382, + "text": "[\"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\"]" }, "cookies": [ { - "domain": ".npmjs.org", + "domain": "npmjs.org", "httpOnly": true, "name": "_cfuvid", "path": "/", @@ -64,7 +64,7 @@ "headers": [ { "name": "date", - "value": "Wed, 17 Dec 2025 20:35:13 GMT" + "value": "Tue, 21 Apr 2026 16:19:54 GMT" }, { "name": "content-type", @@ -79,12 +79,13 @@ "value": "keep-alive" }, { - "name": "content-encoding", - "value": "gzip" + "_fromType": "array", + "name": "set-cookie", + "value": "_cfuvid=; HttpOnly; SameSite=None; Secure; Path=/; Domain=npmjs.org" }, { "name": "cf-ray", - "value": "9af934aaa95e7c2b-DEN" + "value": "9efdb6896feab188-DEN" }, { "name": "cf-cache-status", @@ -99,35 +100,34 @@ "value": "public, max-age=300" }, { - "name": "etag", - "value": "W/\"bed6dea0b301422437d713481f848cf9\"" + "name": "vary", + "value": "accept-encoding, accept" }, { "name": "last-modified", - "value": "Tue, 16 Sep 2025 03:22:01 GMT" + "value": "Tue, 21 Apr 2026 02:33:44 GMT" }, { - "name": "vary", - "value": "accept-encoding, accept" + "name": "server", + "value": "cloudflare" }, { - "_fromType": "array", - "name": "set-cookie", - "value": "_cfuvid=; path=/; domain=.npmjs.org; HttpOnly; Secure; SameSite=None" + "name": "etag", + "value": "W/\"c65383512095362969855e6750b7ae70\"" }, { - "name": "server", - "value": "cloudflare" + "name": "content-encoding", + "value": "gzip" } ], - "headersSize": 573, + "headersSize": 611, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 200, "statusText": "OK" }, - "startedDateTime": "2025-12-17T20:35:13.614Z", - "time": 403, + "startedDateTime": "2026-04-21T16:19:54.362Z", + "time": 423, "timings": { "blocked": -1, "connect": -1, @@ -135,7 +135,7 @@ "receive": 0, "send": 0, "ssl": -1, - "wait": 403 + "wait": 423 } } ],