diff --git a/.github/workflows/quest-pr.yml b/.github/workflows/quest-pr.yml new file mode 100644 index 0000000..e74c3a3 --- /dev/null +++ b/.github/workflows/quest-pr.yml @@ -0,0 +1,180 @@ +name: Quest tests + +on: + pull_request: + branches: [main] + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: quest-tests-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + CI: "true" + FORCE_COLOR: "1" + +jobs: + quality: + name: Unit, integration, and corpus integrity + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: npm + - name: Enforce the test-only bootstrap scope + if: github.event_name == 'pull_request' && github.head_ref == 'quest-2-test-suite' + run: npm run quality:test-only-scope -- --head "${{ github.event.pull_request.head.sha }}" + - run: npm ci + - uses: actions/cache@v4 + with: + path: .cache/questionnaire + key: questionnaire-${{ runner.os }}-${{ hashFiles('tests/corpus/lock.json') }} + - run: npm run corpus:fetch + - run: npm run corpus:verify + - name: Run Vitest with coverage and JUnit output + run: | + mkdir -p test-results + npx vitest run --coverage --reporter=default --reporter=junit --outputFile.junit=test-results/vitest-junit.xml + - name: Publish unit-test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: quest-unit-reports + retention-days: 14 + if-no-files-found: warn + path: | + coverage/ + test-results/vitest-junit.xml + + chromium: + name: Chromium participant and authoring + needs: quality + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: npm + - run: npm ci + - uses: actions/cache@v4 + with: + path: .cache/questionnaire + key: questionnaire-${{ runner.os }}-${{ hashFiles('tests/corpus/lock.json') }} + - run: npm run corpus:fetch && npm run corpus:verify + - run: npx playwright install --with-deps chromium + - name: Run the curated desktop suite and all 29 production smoke tests + run: npm run test:e2e:chromium + - name: Run representative responsive and Windows branches + run: | + npm run test:e2e:responsive + npm run test:e2e:windows + - name: Publish Chromium failure diagnostics + if: failure() + uses: actions/upload-artifact@v4 + with: + name: quest-chromium-failures + retention-days: 14 + if-no-files-found: warn + path: | + playwright-report/ + test-results/ + + cross-browser: + name: Representative ${{ matrix.project }} + needs: quality + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + include: + - project: firefox-desktop + browser: firefox + - project: webkit-desktop + browser: webkit + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: npm + - run: npm ci + - uses: actions/cache@v4 + with: + path: .cache/questionnaire + key: questionnaire-${{ runner.os }}-${{ hashFiles('tests/corpus/lock.json') }} + - run: npm run corpus:fetch && npm run corpus:verify + - run: npx playwright install --with-deps ${{ matrix.browser }} + - name: Run canonical, axe, and representative authoring checks + run: npx playwright test --project=${{ matrix.project }} --grep "@canonical|@axe|@cross-browser-authoring" --grep-invert @known-defect + - name: Publish browser failure diagnostics + if: failure() + uses: actions/upload-artifact@v4 + with: + name: quest-${{ matrix.project }}-failures + retention-days: 14 + if-no-files-found: warn + path: | + playwright-report/ + test-results/ + + known-defects: + name: Known defects (non-blocking) + needs: quality + continue-on-error: true + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: actions/setup-node@v4 + with: + node-version-file: .node-version + cache: npm + - run: npm ci + - uses: actions/cache@v4 + with: + path: .cache/questionnaire + key: questionnaire-${{ runner.os }}-${{ hashFiles('tests/corpus/lock.json') }} + - run: npm run corpus:fetch && npm run corpus:verify + - run: npx playwright install --with-deps chromium firefox webkit + - run: npm run test:known-defects + - name: Publish known-defect diagnostics + if: always() + uses: actions/upload-artifact@v4 + with: + name: quest-known-defects + retention-days: 14 + if-no-files-found: warn + path: | + playwright-report/ + test-results/ + + required: + name: Quest tests / required + if: always() + needs: [quality, chromium, cross-browser] + runs-on: ubuntu-24.04 + steps: + - name: Require all blocking lanes + env: + RESULTS: ${{ toJSON(needs) }} + run: | + if ! jq -e 'all(.[]; .result == "success")' <<< "$RESULTS" >/dev/null; then + echo "$RESULTS" | jq . + exit 1 + fi diff --git a/.gitignore b/.gitignore index f77ecea..ea65225 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,8 @@ questionnaires/d2.txt node_modules testmodules testcode +.cache/ +coverage/ +playwright-report/ +test-results/ +tests/generated/reports/ diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..b832e40 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +24.16.0 diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..b832e40 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24.16.0 diff --git a/README.md b/README.md index f7ae055..8fef8a0 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,5 @@ [![Join the chat at https://gitter.im/episphere/quest](https://badges.gitter.im/episphere/quest.svg)](https://gitter.im/episphere/quest?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Experimenting with the idea of a questionnaire markdown, live at https://episphere.github.io/quest-dev + +See the [Quest test suite](tests/README.md) for setup and test commands. diff --git a/docs/accessibilityManualTest.md b/docs/accessibilityManualTest.md new file mode 100644 index 0000000..2186563 --- /dev/null +++ b/docs/accessibilityManualTest.md @@ -0,0 +1,139 @@ +# Quest 2 accessibility manual test matrix + +Scope: **Quest 2 participant runtime only** + +Browser automation can inspect DOM semantics, focus, state, and live regions, but it does not run VoiceOver or JAWS and cannot prove what either screen reader announces. This matrix describes those manual accessibility testing processes. + +## Test boundary + +- Use only non-production participant data and the canonical fixtures under `tests/fixtures/canonical/`. +- On the target test machine, install the Node version in `.node-version`, run `npm ci`, and install the + browser binaries with `npx playwright install chromium firefox webkit`. +- Start the server with `npm run harness:start`. Leave that terminal running. +- Open + `http://127.0.0.1:4173/tests/harness/participant.html?fixture=runtimeControls.txt` + in Safari for VoiceOver, or in Chrome/Edge on Windows 11 for JAWS. The query + loads the public synthetic canonical control fixture automatically. +- For radio-grid steps, reload a fresh page at the same URL with + `fixture=gridResponsive.txt`; for checkbox-grid focus branches use + `fixture=gridCheckboxFocus.txt`; for validation use + `fixture=validation.txt`; for navigation/restoration use + `fixture=navigationState.txt`. +- Keep Quest inside `#root > .row > #questionnaireRoot`. +- Start each scenario from a new browser page. Quest owns module-level state and a second render in the same page is not a supported isolation boundary. +- Do not enable browser extensions other than the screen reader under test. +- Record operating-system, browser, screen-reader, and Quest commit/version values before testing. +- Run `npm run test:e2e -- --grep "@canonical|@axe|@responsive|@windows-a11y"` first. Automated results are prerequisites, not substitutes for this matrix. + +## Environment matrix + +| ID | Operating system | Browser | Assistive technology | Required modes | +| --- | --- | --- | --- | --- | +| KBD-MAC | Current supported macOS | Safari | None | Full Keyboard Access on | +| VO-SAF | Current supported macOS | Safari | VoiceOver | Quick Nav off, then Quick Nav on | +| KBD-WIN | Windows 11 | Current Chrome and Edge | None | Browser default keyboard handling | +| JAWS-CHR | Windows 11 | Current Chrome | Current supported JAWS | Virtual Cursor, Forms Mode | +| JAWS-EDG | Windows 11 | Current Edge | Current supported JAWS | Virtual Cursor, Forms Mode | + +“Current” must be replaced with exact version numbers in the test record. Playwright WebKit is not Safari plus VoiceOver, and Chromium with a Windows user-agent string is not JAWS. + +## Keyboard-only baseline — issue #1587 + +Run KBD-MAC and KBD-WIN without a screen reader. Repeat in both Chrome and Edge for KBD-WIN. + +| Step | Action | Expected result | +| --- | --- | --- | +| 1 | Tab from “Participant dashboard” | Focus follows DOM order and is always visibly indicated; it does not disappear into a hidden control. | +| 2 | Shift+Tab | Focus returns to the immediately preceding operable control. | +| 3 | Focus a link and press Enter | The link performs its native action. | +| 4 | Focus Next, Reset, and Back; press Enter, then repeat with Space | Each button performs exactly one action with either key. | +| 5 | Focus an unchecked checkbox and press Space twice | Checked state becomes true, then false; the live message agrees with state. | +| 6 | Focus a radio group and use Up/Down and Left/Right | Focus and selection move within the group; exactly one option remains checked. | +| 7 | Focus a native select; use Alt+Down or Space as appropriate for the browser, arrows, Enter, and Escape | The browser opens, navigates, commits, and dismisses the native control without a custom Quest key trap. | +| 8 | On a text question, Tab through actions | Tab order is Next, Reset, Back even though desktop visual order is Back, Reset, Next. | +| 9 | Repeat the response-grid fixture at phone width | Each stacked response remains operable and its checked state is visible. | + +Raw browser key expectations apply only to this keyboard-only baseline. Do not file a failure solely because a screen reader reserves or reroutes one of these keys. + +## VoiceOver with Safari — issue #1079 + +First run with Quick Nav off. Repeat response navigation and activation with Quick Nav on, and record the VoiceOver command actually used. + +1. Start VoiceOver before loading the page and open the canonical control fixture. +2. Confirm the survey boundary and the first question are announced once. The question must have a meaningful group/legend name. +3. Navigate by form controls and by VoiceOver cursor. Each response must expose role, name, and selected/checked state; styled labels alone are insufficient. +4. Activate a response with the VoiceOver default action (normally VO+Space). Confirm the visual selection, DOM checked state, and polite live announcement all agree. +5. Navigate forward. Focus must land at the newly active question context after the deliberate delay; it must not remain on a removed button or move to the PWA header/footer. +6. Use Back. Confirm the earlier response is restored and announced with the correct checked state. +7. Exercise text, number, select, date, and time controls. Confirm each control has a useful name and browser-native editing still works. +8. Trigger required and range validation. Confirm the error is announced, focus remains in the question, and correction clears the error. +9. Exercise the response grid. Confirm row prompt, column option, and selected state are available together. +10. Open and close soft-validation and submit dialogs. Confirm dialog name, focus entry, keyboard containment, close action, and return focus. + +## JAWS with Chrome and Edge — issue #1079 + +Run each browser once. State explicitly whether each observation occurred in Virtual Cursor or Forms Mode. + +1. Start JAWS before opening the canonical control fixture. +2. In Virtual Cursor, navigate to the survey and confirm the first question is announced once with its group name. +3. Enumerate form controls. Every choice must expose radio/checkbox role, name, and checked state; a focusable generic response container is not an adequate replacement. +4. Enter Forms Mode and activate a choice with the JAWS default action. Confirm visual state, DOM state, and live announcement agree. +5. Use the response container/list navigation supplied for Windows. Confirm there is no dead tab stop and no double activation. +6. For radio groups, verify native group exclusivity and arrow behavior while in the appropriate mode. +7. For “Other” text responses, use Up/Down navigation around the embedded text field. Confirm focus neither traps nor skips the neighboring response. +8. Exercise both grid fixtures. After a radio selection, confirm the next row prompt is announced; after the last radio row, confirm focus proceeds to Next. In the checkbox grid, confirm an intermediate selection stays in its cell and the terminal selection proceeds to Next. +9. Repeat Next, Back, validation, state restoration, async success/error, and modal focus scenarios from the VoiceOver matrix. +10. Exit Forms Mode and confirm the Virtual Cursor resumes at a sensible location in the active question. + +## Evidence to capture + +For every failure, record: + +- environment ID and exact OS/browser/screen-reader versions; +- Quick Nav, Virtual Cursor, or Forms Mode state; +- fixture, question ID, response ID, and viewport; +- the physical keys and screen-reader command used; +- expected versus actual role, accessible name, checked state, focus target, and spoken output; +- whether visual DOM state and stored Quest state changed; +- a minimal reproduction trace or video with participant data removed; +- the related issue: [#1079](https://github.com/episphere/connect/issues/1079) for JAWS/VoiceOver behavior or [#1587](https://github.com/episphere/connect/issues/1587) for keyboard-only operation. + +Pass only when the keyboard-only matrix succeeds independently and both screen readers expose correct role/name/state and predictable focus. A Playwright pass, a user-agent simulation, or success in only one screen-reader mode is not sufficient. + +## Test record + +Copy this table into the issue or test report for every execution. Do not replace exact versions with “latest” or “current.” + +| Field | Recorded value | +| --- | --- | +| Protocol version | 1.0.0 | +| Quest commit and Quest version | | +| Questionnaire fixture/version | | +| Environment ID | | +| OS name, edition, and exact version | | +| Browser name and exact version | | +| Assistive technology and exact version | | +| AT mode / Quick Nav / Full Keyboard Access | | +| Tester and date | | +| Automated prerequisite run URL/result | | +| Steps passed | | +| Steps failed | | +| Issue/evidence links | | +| Overall result | PASS / FAIL / BLOCKED | + +Record each step separately; an aggregate PASS must never hide a skipped browser, +assistive-technology mode, or interaction. + +| Environment ID | Procedure / step | AT mode | Result | Actual focus, role/name/state, and spoken output | Evidence / defect | +| --- | --- | --- | --- | --- | --- | +| KBD-MAC | Keyboard 1 | Full Keyboard Access | PASS / FAIL / BLOCKED / NOT RUN | | | +| VO-SAF | VoiceOver 1 | Quick Nav off | PASS / FAIL / BLOCKED / NOT RUN | | | +| VO-SAF | VoiceOver 1 | Quick Nav on | PASS / FAIL / BLOCKED / NOT RUN | | | +| KBD-WIN | Keyboard 1 | Browser default | PASS / FAIL / BLOCKED / NOT RUN | | | +| JAWS-CHR | JAWS 1 | Virtual Cursor | PASS / FAIL / BLOCKED / NOT RUN | | | +| JAWS-CHR | JAWS 1 | Forms Mode | PASS / FAIL / BLOCKED / NOT RUN | | | +| JAWS-EDG | JAWS 1 | Virtual Cursor | PASS / FAIL / BLOCKED / NOT RUN | | | +| JAWS-EDG | JAWS 1 | Forms Mode | PASS / FAIL / BLOCKED / NOT RUN | | | + +Duplicate rows for every numbered step in the applicable procedure. `NOT RUN` +is not a pass and requires a reason in the final column. diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..359c6cb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3301 @@ +{ + "name": "@episphere/quest-dev-tests", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@episphere/quest-dev-tests", + "version": "0.0.0", + "devDependencies": { + "@axe-core/playwright": "4.10.2", + "@fortawesome/fontawesome-free": "6.4.2", + "@playwright/test": "1.60.0", + "@vitest/coverage-v8": "3.2.7", + "bootstrap": "5.3.3", + "bootstrap-authoring": "npm:bootstrap@5.3.2", + "jsdom": "29.1.1", + "localforage": "1.10.0", + "mathjs": "13.0.3", + "vite": "7.3.6", + "vitest": "3.2.7" + }, + "engines": { + "node": "24.x" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "5.1.11", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.1.11.tgz", + "integrity": "sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/generational-cache": "^1.0.1", + "@csstools/css-calc": "^3.2.0", + "@csstools/css-color-parser": "^4.1.0", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.1.1.tgz", + "integrity": "sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/generational-cache": "^1.0.1", + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.2.1", + "is-potential-custom-element-name": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/generational-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/generational-cache/-/generational-cache-1.0.1.tgz", + "integrity": "sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@axe-core/playwright": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.10.2.tgz", + "integrity": "sha512-6/b5BJjG6hDaRNtgzLIfKr5DfwyiLHO4+ByTLB0cJgWSM8Ll7KqtdblIS6bEkwSF642/Ex91vNqIl3GLXGlceg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "axe-core": "~4.10.3" + }, + "peerDependencies": { + "playwright-core": ">= 1.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.1.0.tgz", + "integrity": "sha512-064IFJdjTfUqnjpCVpMOdbr8FLQBhinbZj6yRv2An2E41O/pLEXqfFRWqGq/SxlE5PEUYTlvWsG2r8MswAVvkg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/css-calc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.3.0.tgz", + "integrity": "sha512-c5ihYsPkdG6JCkU2zTMm4+k6r7RXuGxtWYhu5DHMIiF1FHzrfmHL5so11AoFpUv/tu61xfcmT4AmKoFfMPoqdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.10.tgz", + "integrity": "sha512-UZhQLIUyJaaMepqehrCODwCg2KW25vFvLWBmqYFaPclYvvxzj/sG8LBOhBFCp11i9uE7t1EyS+RAoV9tztPFyw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.1.0", + "@csstools/css-calc": "^3.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.7.tgz", + "integrity": "sha512-fQ+05118eQS1cofO3aJpB5efgpBZMvIzwr/sbC8kDLVA5XLG8q1kJV5yzrUAI1f7lvhPnm8fgIjzFB8/O/5Dig==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz", + "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz", + "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz", + "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz", + "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz", + "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz", + "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz", + "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz", + "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz", + "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz", + "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz", + "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz", + "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz", + "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz", + "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz", + "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz", + "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz", + "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz", + "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz", + "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz", + "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz", + "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz", + "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz", + "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz", + "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz", + "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz", + "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@exodus/bytes": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.1.tgz", + "integrity": "sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", + "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==", + "dev": true, + "hasInstallScript": true, + "license": "(CC-BY-4.0 AND OFL-1.1 AND MIT)", + "engines": { + "node": ">=6" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/test": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", + "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", + "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", + "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", + "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", + "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", + "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", + "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", + "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", + "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", + "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", + "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", + "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", + "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", + "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", + "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", + "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", + "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", + "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", + "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", + "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", + "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", + "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", + "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", + "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", + "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", + "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/coverage-v8": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.7.tgz", + "integrity": "sha512-NEGWJS2XNu2PfRLQwOO3CTKj1tTETxNBdk454vDxVBhxJYhPaA/eS0nAI0c+1El1P7a60z8+i+ZrQoGESweGKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.7", + "vitest": "3.2.7" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.7.tgz", + "integrity": "sha512-E8eBXaKibuvH2pSZErOjdVb5vF4PbKYcrnluBTYxEk1l/VhhwZg1kZQsdtjq+CsF5CFydf2Rdkz7jDHKSisi3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.7", + "@vitest/utils": "3.2.7", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.7.tgz", + "integrity": "sha512-Trr0hYO9CM3Wj6ksWHRhK9IZpIY6wTMO5u/MqXurMxT57sWBaOPEtP3Oq60ihZuh5JsiagKfz95OcxdEP6dBrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.7", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.7.tgz", + "integrity": "sha512-KUHlwqVu0sRlhCdyPdQ/wBoTfRahjUky1MubOmYw9fWfIZy1gNoHpuaaQBPAaMaVYdQYHJLurzj8ECCj5OwTqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.7.tgz", + "integrity": "sha512-sB9y4ovltoQP+WaUPwmSxO9WIg9Ig694Di5PalVPsYHklAdE027mehpWF2SQSVq+k6sFgaivbTjTJwZLSHbedA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.7", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.7.tgz", + "integrity": "sha512-7C+MwShwtBSI5Buwoyg3s/iY1eHL9PKAf+O1wVh/TdnjXUtkoL/9YQtre90i4MtNXM6edP1wJ2zOBpfCyhIS7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.7", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.7.tgz", + "integrity": "sha512-Q2eQGI6d2L/hBtZ0qNuKcAGid68XK6cv1xsoaIma6PaJhHPoqcEJhYpXZ/5myCMqkNgtP6UKuBhbc0nHKnrkuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.7.tgz", + "integrity": "sha512-x6BDOd7dyo3PFLY3I9/HJ25X/6OurhGXk2/B9gOZNPF7XDVjeBK4k01lQE5uvDpbuheErh91qYuE1E2OEjK3Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.7", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.12.tgz", + "integrity": "sha512-BRRC8VRZY2R4Z4lFIL35MwNXmwVqBityvOIwETtsCSwvjl0IdgFsy9NhdaA6j74nUdtJJlIypeRhpDam19Wq3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } + }, + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-authoring": { + "name": "bootstrap", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/check-error": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/complex.js": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.4.3.tgz", + "integrity": "sha512-UrQVSUur14tNX6tiP4y8T4w4FeJAX3bi2cIv0pu/DTLFNxoq7z2Yh83Vfzztj6Px3X/lubqQ9IrPp7Bpn6p4MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/data-urls": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz", + "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.28.1", + "@esbuild/android-arm": "0.28.1", + "@esbuild/android-arm64": "0.28.1", + "@esbuild/android-x64": "0.28.1", + "@esbuild/darwin-arm64": "0.28.1", + "@esbuild/darwin-x64": "0.28.1", + "@esbuild/freebsd-arm64": "0.28.1", + "@esbuild/freebsd-x64": "0.28.1", + "@esbuild/linux-arm": "0.28.1", + "@esbuild/linux-arm64": "0.28.1", + "@esbuild/linux-ia32": "0.28.1", + "@esbuild/linux-loong64": "0.28.1", + "@esbuild/linux-mips64el": "0.28.1", + "@esbuild/linux-ppc64": "0.28.1", + "@esbuild/linux-riscv64": "0.28.1", + "@esbuild/linux-s390x": "0.28.1", + "@esbuild/linux-x64": "0.28.1", + "@esbuild/netbsd-arm64": "0.28.1", + "@esbuild/netbsd-x64": "0.28.1", + "@esbuild/openbsd-arm64": "0.28.1", + "@esbuild/openbsd-x64": "0.28.1", + "@esbuild/openharmony-arm64": "0.28.1", + "@esbuild/sunos-x64": "0.28.1", + "@esbuild/win32-arm64": "0.28.1", + "@esbuild/win32-ia32": "0.28.1", + "@esbuild/win32-x64": "0.28.1" + } + }, + "node_modules/escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", + "dev": true, + "license": "MIT" + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz", + "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.6.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.1.1.tgz", + "integrity": "sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^5.1.11", + "@asamuzakjp/dom-selector": "^7.1.1", + "@bramus/specificity": "^2.4.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.3", + "@exodus/bytes": "^1.15.0", + "css-tree": "^3.2.1", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.3.5", + "parse5": "^8.0.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.1", + "undici": "^7.25.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.1", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mathjs": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-13.0.3.tgz", + "integrity": "sha512-GpP9OW6swA5POZXvgpc/1FYkAr8lKgV04QHS1tIU60klFfplVCYaNzn6qy0vSp0hAQQN7shcx9CeB507dlLujA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.24.8", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "^4.3.7", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.2.1" + }, + "bin": { + "mathjs": "bin/cli.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/playwright": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", + "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.60.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/playwright/node_modules/playwright-core": { + "version": "1.60.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", + "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/postcss": { + "version": "8.5.25", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz", + "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.16", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.4.tgz", + "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.9" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.62.4", + "@rollup/rollup-android-arm64": "4.62.4", + "@rollup/rollup-darwin-arm64": "4.62.4", + "@rollup/rollup-darwin-x64": "4.62.4", + "@rollup/rollup-freebsd-arm64": "4.62.4", + "@rollup/rollup-freebsd-x64": "4.62.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", + "@rollup/rollup-linux-arm-musleabihf": "4.62.4", + "@rollup/rollup-linux-arm64-gnu": "4.62.4", + "@rollup/rollup-linux-arm64-musl": "4.62.4", + "@rollup/rollup-linux-loong64-gnu": "4.62.4", + "@rollup/rollup-linux-loong64-musl": "4.62.4", + "@rollup/rollup-linux-ppc64-gnu": "4.62.4", + "@rollup/rollup-linux-ppc64-musl": "4.62.4", + "@rollup/rollup-linux-riscv64-gnu": "4.62.4", + "@rollup/rollup-linux-riscv64-musl": "4.62.4", + "@rollup/rollup-linux-s390x-gnu": "4.62.4", + "@rollup/rollup-linux-x64-gnu": "4.62.4", + "@rollup/rollup-linux-x64-musl": "4.62.4", + "@rollup/rollup-openbsd-x64": "4.62.4", + "@rollup/rollup-openharmony-arm64": "4.62.4", + "@rollup/rollup-win32-arm64-msvc": "4.62.4", + "@rollup/rollup-win32-ia32-msvc": "4.62.4", + "@rollup/rollup-win32-x64-gnu": "4.62.4", + "@rollup/rollup-win32-x64-msvc": "4.62.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz", + "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^10.2.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "7.4.10", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.10.tgz", + "integrity": "sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.4.10" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.4.10", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.10.tgz", + "integrity": "sha512-KnQjp53ZekKgm/r3l+u8kJGGzYgrWdP8+Mql7a4vijh2WE0IrZWspQj/TpTxDho/YxO+AnOZnIjQcCD+q6iJsw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.2.tgz", + "integrity": "sha512-exgYmnmL/sJpR3upZfXG5PoatXQii55xAiXGXzY+sROLZ/Y+SLcp9PgJNI9Vz37HpQ74WvDcLT8eqm+kV3FzrA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/typed-function": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/typed-function/-/typed-function-4.2.2.tgz", + "integrity": "sha512-VwaXim9Gp1bngi/q3do8hgttYn2uC3MoT/gfuMWylnj1IeZBUAyPddHZlo1K05BDoj8DYPpMdiHqH1dDYdJf2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/undici": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz", + "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/vite": { + "version": "7.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.6.tgz", + "integrity": "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0 || ^0.28.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vitest": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.7.tgz", + "integrity": "sha512-KrxIJ62Fd89gfysR4WotlgZABiz2dqFPgqGzX7s+CwsqLFomRH7777ZcrOD6+WVAh7khPQP41A+BKbpcJFrdEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.7", + "@vitest/mocker": "3.2.7", + "@vitest/pretty-format": "^3.2.7", + "@vitest/runner": "3.2.7", + "@vitest/snapshot": "3.2.7", + "@vitest/spy": "3.2.7", + "@vitest/utils": "3.2.7", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.7", + "@vitest/ui": "3.2.7", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-url": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..3769698 --- /dev/null +++ b/package.json @@ -0,0 +1,43 @@ +{ + "name": "@episphere/quest-dev-tests", + "private": true, + "version": "0.0.0", + "type": "module", + "engines": { + "node": "24.x" + }, + "scripts": { + "test": "vitest run tests/unit tests/integration", + "test:watch": "vitest tests/unit tests/integration", + "test:corpus": "vitest run tests/corpus", + "test:coverage": "vitest run --coverage", + "quality:test-only-scope": "node tests/quality/scripts/checkTestOnlyScope.mjs", + "test:e2e": "playwright test", + "test:e2e:chromium": "playwright test --project=chromium-desktop --grep-invert @known-defect", + "test:e2e:cross-browser": "playwright test --project=firefox-desktop --project=webkit-desktop --grep \"@canonical|@axe|@cross-browser-authoring\" --grep-invert @known-defect", + "test:e2e:responsive": "playwright test --project=chromium-phone --project=chromium-tablet --grep \"@responsive|@axe\" --grep-invert @known-defect", + "test:e2e:windows": "playwright test --project=chromium-windows-ua --grep \"@windows-a11y|@axe\" --grep-invert @known-defect", + "harness:start": "vite --config vite.config.js --host 127.0.0.1", + "test:e2e:known-defects": "playwright test --grep @known-defect", + "test:known-defects": "node tests/scripts/runKnownDefects.mjs", + "test:pr": "npm run corpus:fetch && npm run corpus:verify && npm run test:coverage && npm run test:e2e:chromium && npm run test:e2e:cross-browser && npm run test:e2e:responsive && npm run test:e2e:windows", + "test:visual:update": "playwright test --project=chromium-desktop --project=chromium-phone --project=chromium-tablet --grep @visual --update-snapshots", + "corpus:fetch": "node tests/corpus/scripts/fetchCorpus.mjs", + "corpus:verify": "node tests/corpus/scripts/verifyCorpus.mjs", + "corpus:catalog:verify": "vitest run tests/corpus/structuralCatalog.spec.js", + "corpus:catalog:update": "vitest run tests/corpus/structuralCatalog.spec.js --update" + }, + "devDependencies": { + "@axe-core/playwright": "4.10.2", + "@fortawesome/fontawesome-free": "6.4.2", + "@playwright/test": "1.60.0", + "@vitest/coverage-v8": "3.2.7", + "bootstrap": "5.3.3", + "bootstrap-authoring": "npm:bootstrap@5.3.2", + "jsdom": "29.1.1", + "localforage": "1.10.0", + "mathjs": "13.0.3", + "vite": "7.3.6", + "vitest": "3.2.7" + } +} diff --git a/playwright.config.js b/playwright.config.js new file mode 100644 index 0000000..2f905c7 --- /dev/null +++ b/playwright.config.js @@ -0,0 +1,66 @@ +import { defineConfig, devices } from '@playwright/test'; + +const testServerPort = Number.parseInt(process.env.QUEST_PLAYWRIGHT_PORT ?? '4173', 10); +const testServerOrigin = `http://127.0.0.1:${testServerPort}`; + +const desktopProjects = [ + { name: 'chromium-desktop', use: { ...devices['Desktop Chrome'] } }, + { name: 'firefox-desktop', use: { ...devices['Desktop Firefox'] } }, + { name: 'webkit-desktop', use: { ...devices['Desktop Safari'] } }, +]; + +export default defineConfig({ + testDir: './tests/e2e', + testMatch: '**/*.spec.js', + timeout: 45_000, + expect: { timeout: 10_000 }, + fullyParallel: true, + forbidOnly: Boolean(process.env.CI), + retries: process.env.CI ? 1 : 0, + workers: process.env.CI ? 4 : undefined, + reporter: process.env.CI + ? [['list'], ['junit', { outputFile: 'test-results/playwright-junit.xml' }], ['html', { open: 'never' }]] + : [['list'], ['html', { open: 'never' }]], + use: { + baseURL: testServerOrigin, + locale: 'en-US', + timezoneId: 'UTC', + trace: 'on-first-retry', + screenshot: 'only-on-failure', + video: 'retain-on-failure', + serviceWorkers: 'block', + }, + projects: [ + ...desktopProjects, + { + name: 'chromium-phone', + use: { + ...devices['Desktop Chrome'], + viewport: { width: 390, height: 844 }, + isMobile: true, + hasTouch: true, + }, + }, + { + name: 'chromium-tablet', + use: { + ...devices['Desktop Chrome'], + viewport: { width: 820, height: 1180 }, + hasTouch: true, + }, + }, + { + name: 'chromium-windows-ua', + use: { + ...devices['Desktop Chrome'], + userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36', + }, + }, + ], + webServer: { + command: `npx vite --config vite.config.js --port ${testServerPort}`, + url: `${testServerOrigin}/tests/harness/participant.html`, + reuseExistingServer: !process.env.CI, + timeout: 60_000, + }, +}); diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..ff6d8ae --- /dev/null +++ b/tests/README.md @@ -0,0 +1,62 @@ +# Quest test suite + +Quest owns this standalone Node 24 test package. It does not boot the Connect +PWA; browser tests embed Quest in a stable Connect-shaped page and call the +existing `transform.render(...)` API. + +## Setup + +1. Use the Node patch in `.node-version` and `.nvmrc`. +2. Run `npm ci`. +3. Run `npx playwright install chromium firefox webkit`. +4. Run `npm run corpus:fetch` once. The command downloads the immutable + questionnaire revision in `tests/corpus/lock.json` and verifies its hashes. + No GitHub token is required. + +## Useful commands + +- `npm test` — the fast unit and jsdom integration loop; it deliberately omits + the slower locked-corpus catalog. +- `npm run test:corpus` — corpus integrity, structure, piping, address, and + structural-catalog checks against the pinned questionnaire revision. +- `npm run test:coverage` — the complete Vitest suite, including corpus checks, + with pragmatic aggregate coverage thresholds. +- `npm run test:e2e:chromium` — the complete curated Chromium suite, including + startup and renderer/full-list checks for each locked production survey. +- `npm run test:e2e:cross-browser` — representative canonical, accessibility, + and authoring checks in Firefox and WebKit; the full authoring suite remains + in Chromium. +- `npm run test:e2e:responsive` — the phone and tablet Chromium contracts. +- `npm run test:e2e:windows` — the Windows-user-agent accessibility branch. +- `npm run test:known-defects` — visible expected failures for confirmed + pre-existing defects. +- `npm run test:pr` — the complete local equivalent of the required CI lanes. +- `npm run corpus:catalog:verify` — regenerate the real parser denominator in + memory and fail if it differs from the reviewed structural catalog. +- `npm run corpus:catalog:update` — intentionally update that catalog for + review after a locked corpus or parser change. +- `npm run harness:start` — serve the participant and authoring harnesses for + manual inspection. + +## Scope + +The suite protects parsing, rendering, delegated events, validation, +conditions, queues and loops, back/resume state, host storage and async errors, +authoring, keyboard/focus behavior, representative responsive layouts, and +full-list conversion of all locked production files. It does not implement a +second Quest navigation engine or attempt to enumerate every theoretical +response combination. + +Each ordinary participant render uses a fresh page because Quest retains some +module-level state. All runtime assets are served locally, and unexpected +external requests fail the test. + +The embedded-event tests prove that ordinary host capture and bubble observers +coexist with Quest's delegated listeners. This standalone repository cannot +prove that the current Connect PWA never calls `preventDefault()` or +`stopImmediatePropagation()` first; that requires one focused integration test +in the PWA when the accessibility investigation resumes. + +See `docs/accessibilityManualTest.md` for the VoiceOver and JAWS +acceptance protocol. Automated browser tests characterize intended native +keyboard behavior but do not claim to run either screen reader. diff --git a/tests/config/moduleResolution.js b/tests/config/moduleResolution.js new file mode 100644 index 0000000..4ea490d --- /dev/null +++ b/tests/config/moduleResolution.js @@ -0,0 +1,19 @@ +import { createRequire } from 'node:module'; + +export const MATHJS_CDN_SPECIFIER = 'https://cdn.jsdelivr.net/npm/mathjs@13.0.3/+esm'; + +const require = createRequire(import.meta.url); +const localMathJsEntry = require.resolve('mathjs'); + +/** + * Quest ships as unbundled browser modules and imports MathJS + * from jsDelivr. Tests resolve that exact production specifier to the pinned + * local package so CI is deterministic and can run without outbound access. + */ +export const questDependencyResolver = { + name: 'quest-test-dependency-resolver', + enforce: 'pre', + resolveId(source) { + return source === MATHJS_CDN_SPECIFIER ? localMathJsEntry : null; + }, +}; diff --git a/tests/corpus/README.md b/tests/corpus/README.md new file mode 100644 index 0000000..402b8c6 --- /dev/null +++ b/tests/corpus/README.md @@ -0,0 +1,53 @@ +# Locked questionnaire corpus + +`lock.json` pins the 29 production questionnaire files used by the test suite, +including the extensionless Diet Screener. Normal test runs never use mutable +`main`. + +Run: + +```sh +npm run corpus:fetch +npm run corpus:verify +npm run corpus:catalog:verify +``` + +Local and CI fetches use GitHub's public archive URL for the exact locked +commit. They do not read or require `GITHUB_TOKEN` or `GH_TOKEN`. After the +download, every selected file is checked against the SHA-256 and Git blob hash +recorded in `lock.json` before it is installed in the cache. + +Verified files are stored under the ignored `.cache/questionnaire/` +directory. Chromium opens every locked survey in fresh Connect-shaped pages +twice: once as a participant startup smoke test and once in renderer/full-list +mode. Full-list mode must convert and append every entry produced by the real +`QuestionProcessor`, in order, without unexpected console, network, or +`errorLogger` failures. + +`structuralCatalog.json` is the reviewable denominator produced through the +same full-list parser boundary. For each survey it records: + +- marker and loop-expanded runtime counts +- ordered runtime question IDs +- response-control families +- transition targets, trigger values, and resolution classes +- condition expressions and site counts +- grid rows, loop boundaries, async hooks, and unresolved targets + +The lock's `sourceQuestionCount` field counts question markers. +That is not always the number of runtime forms: grid row markers are folded +into grid forms, while loops are expanded to as many as 25 iterations. The +catalog uses the clearer name `authoredMarkerCount` and separately reports the +actual parser-produced form count. + +Regenerate the catalog only when a reviewed questionnaire lock or Quest parser +change intentionally changes its structure: + +```sh +npm run corpus:catalog:update +git diff -- tests/corpus/structuralCatalog.json +``` + +Deeper behavior is covered with focused fixtures. This catalog describes parser output. +It does not yet claim that every node is reachable, evaluate both sides of every condition, +or generate completed participant paths. diff --git a/tests/corpus/corpusIntegrity.spec.js b/tests/corpus/corpusIntegrity.spec.js new file mode 100644 index 0000000..e100bb5 --- /dev/null +++ b/tests/corpus/corpusIntegrity.spec.js @@ -0,0 +1,142 @@ +import { mkdtemp, mkdir, readFile, rm, writeFile } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; + +import { afterEach, describe, expect, it } from 'vitest'; + +import { + CorpusVerificationError, + analyzeQuestionnaireText, + gitBlobShaBuffer, + loadCorpusLock, + sha256Buffer, + validateCorpusLock, + verifyCorpus, +} from './scripts/lib/corpus.mjs'; + +const temporaryDirectories = []; + +afterEach(async () => { + await Promise.all(temporaryDirectories.splice(0).map((directory) => ( + rm(directory, { recursive: true, force: true }) + ))); +}); + +function lockedFile({ module, locale, productionPath, text }) { + const buffer = Buffer.from(text); + const analysis = analyzeQuestionnaireText(text); + return { + module, + locale, + language: locale, + path: productionPath, + questName: analysis.questName, + version: analysis.version, + sourceQuestionCount: analysis.questionIds.length, + sha256: sha256Buffer(buffer), + gitBlobSha: gitBlobShaBuffer(buffer), + }; +} + +async function writeFixture(root, repositoryPath, content) { + const filePath = path.join(root, ...repositoryPath.split('/')); + await mkdir(path.dirname(filePath), { recursive: true }); + await writeFile(filePath, content); +} + +describe('questionnaire corpus lock', () => { + it('pins the complete audited production inventory, including extensionless Diet Screener', async () => { + const lock = await loadCorpusLock(); + expect(lock.commit).toBe('7ae99a22af325cf0e14be047a7636462db9bfd50'); + expect(lock.files).toHaveLength(29); + expect(new Set(lock.files.map((entry) => entry.module))).toHaveProperty('size', 15); + expect(lock.files.filter((entry) => entry.locale === 'en')).toHaveLength(15); + expect(lock.files.filter((entry) => entry.locale === 'es')).toHaveLength(14); + expect(lock.files.every((entry) => entry.language === entry.locale)).toBe(true); + expect(lock.files.some((entry) => entry.path === 'prod/moduleDietScreener')).toBe(true); + expect(lock.files.every((entry) => /^[0-9a-f]{64}$/.test(entry.sha256))).toBe(true); + }); + + it('requires the literal language field to match locale', async () => { + const lock = await loadCorpusLock(); + const missingLanguage = structuredClone(lock); + delete missingLanguage.files[0].language; + expect(() => validateCorpusLock(missingLanguage)).toThrow(/language must be en or es/); + + const mismatchedLanguage = structuredClone(lock); + mismatchedLanguage.files[0].language = 'es'; + expect(() => validateCorpusLock(mismatchedLanguage)).toThrow(/language must match locale/); + }); + + it('declares language as required in the lock JSON schema', async () => { + const schema = JSON.parse(await readFile( + path.resolve(import.meta.dirname, 'schemas/lock.schema.json'), + 'utf8', + )); + expect(schema.properties.files.items.required).toContain('language'); + expect(schema.properties.files.items.properties.language.enum).toEqual(['en', 'es']); + }); + + it('strips authored comments before analyzing question IDs', () => { + const analysis = analyzeQuestionnaireText([ + '//{"version":"1.0"}', + '{"name":"D_123"}', + '// [COMMENTED?] ignored', + '/* [BLOCKED?] ignored */', + '[QUESTION?] Prompt', + '[END,end] Done', + ].join('\n')); + + expect(analysis.questName).toBe('D_123'); + expect(analysis.version).toBe('1.0'); + expect(analysis.questionIds).toEqual(['QUESTION', 'END']); + expect(analysis.endCount).toBe(1); + }); +}); + +describe('corpus verification', () => { + it('checks production hashes, metadata, and language question-ID parity', async () => { + const root = await mkdtemp(path.join(os.tmpdir(), 'quest-corpus-test-')); + temporaryDirectories.push(root); + const english = '//{"version":"1.0"}\n{"name":"D_123"}\n[QUESTION?] English\n[END,end] Done\n'; + const spanish = '//{"version":"1.0"}\n{"name":"D_123"}\n[QUESTION?] Español\n[END,end] Fin\n'; + const files = [ + lockedFile({ + module: 'moduleTest', locale: 'en', productionPath: 'prod/moduleTest.txt', + text: english, + }), + lockedFile({ + module: 'moduleTest', locale: 'es', productionPath: 'prod/moduleTestSpanish.txt', + text: spanish, + }), + ]; + const lock = validateCorpusLock({ + schemaVersion: 1, + repository: 'example/questionnaire', + repositoryUrl: 'https://github.com/example/questionnaire.git', + defaultBranch: 'main', + commit: 'a'.repeat(40), + cacheRoot: '.cache/questionnaire', + sourceDirectory: 'prod', + environment: 'prod', + expectedFileCount: 2, + expectedModuleCount: 1, + expectedLanguageCounts: { en: 1, es: 1 }, + questionIdParityExceptions: [], + files, + }); + + await writeFixture(root, files[0].path, english); + await writeFixture(root, files[1].path, spanish); + + await expect(verifyCorpus({ lock, cacheDir: root })).resolves.toMatchObject({ + files: 2, + modules: 1, + sourceQuestionCount: 4, + }); + + await writeFile(path.join(root, files[0].path), `${english}tampered`); + await expect(verifyCorpus({ lock, cacheDir: root })).rejects.toBeInstanceOf(CorpusVerificationError); + await expect(verifyCorpus({ lock, cacheDir: root })).rejects.toThrow(/SHA-256 mismatch/); + }); +}); diff --git a/tests/corpus/hostPersonas.json b/tests/corpus/hostPersonas.json new file mode 100644 index 0000000..ddc8323 --- /dev/null +++ b/tests/corpus/hostPersonas.json @@ -0,0 +1,162 @@ +{ + "schemaVersion": 1, + "personas": [ + { + "id": "external-values-missing", + "description": "Exercises does-not-exist and fallback behavior with no cross-survey results.", + "previousResults": {}, + "userProfile": { + "D_644459734": "2024-06-15", + "age": "45", + "yob": "1979", + "firstName": "Test Participant" + }, + "asyncOutcome": "success" + }, + { + "id": "external-branch-primary", + "description": "Uses the primary constants referenced by current production branch conditions.", + "previousResults": { + "D_407056417": "536341288", + "D_613744428": "353358909", + "D_750420077": "578416151", + "D_784967158": "551525967" + }, + "userProfile": { + "D_644459734": "2024-06-15", + "age": "45", + "yob": "1979", + "firstName": "Test Participant" + }, + "asyncOutcome": "success" + }, + { + "id": "external-branch-alternate", + "description": "Uses alternate constants referenced by current production branch conditions.", + "previousResults": { + "D_407056417": "654207589", + "D_613744428": "104430631", + "D_750420077": "434651539", + "D_784967158": "738284740" + }, + "userProfile": { + "D_644459734": "2024-06-15", + "age": "45", + "yob": "1979", + "firstName": "Test Participant" + }, + "asyncOutcome": "success" + }, + { + "id": "async-empty", + "description": "Exercises an async host callback that resolves without usable response options.", + "previousResults": {}, + "userProfile": { + "D_644459734": "2024-06-15", + "age": "45", + "yob": "1979", + "firstName": "Test Participant" + }, + "asyncOutcome": "empty" + }, + { + "id": "async-error", + "description": "Exercises an async host callback rejection without using live services.", + "previousResults": {}, + "userProfile": { + "D_644459734": "2024-06-15", + "age": "45", + "yob": "1979", + "firstName": "Test Participant" + }, + "asyncOutcome": "rejection" + }, + { + "id": "async-delayed", + "description": "Exercises deterministic delayed completion for every supported async host callback.", + "previousResults": {}, + "userProfile": { + "D_644459734": "2024-06-15", + "age": "45", + "yob": "1979", + "firstName": "Test Participant" + }, + "asyncOutcome": "delayed" + } + ], + "asyncHooks": { + "module1:D_761310265": { + "module": "module1", + "questionId": "D_761310265", + "markupKey": "[D_761310265?]", + "function": "soccer", + "args": ["D_627122657", "D_796828094"], + "fixtureResult": "soccer" + }, + "module1:D_279637054": { + "module": "module1", + "questionId": "D_279637054", + "markupKey": "[D_279637054?]", + "function": "soccer", + "args": ["D_118061122", "D_518387017"], + "fixtureResult": "soccer" + }, + "moduleMenstrual:END": { + "module": "moduleMenstrual", + "questionId": "END", + "markupKey": "[END]", + "function": "resetMenstrualCycle", + "args": ["D_951357171"], + "fixtureResult": "resetMenstrualCycle" + }, + "moduleMouthwash:END": { + "module": "moduleMouthwash", + "questionId": "END", + "markupKey": "[END]", + "function": "resetMouthwash", + "args": ["D_667908442"], + "fixtureResult": "resetMouthwash" + } + }, + "asyncFixtures": { + "success": { + "outcomes": [{ "kind": "resolve" }], + "results": { + "soccer": [ + { + "code": "TEST-SOC-0", + "title": "Test occupation result" + } + ], + "resetMenstrualCycle": { "completed": true }, + "resetMouthwash": { "completed": true } + } + }, + "empty": { + "outcomes": [{ "kind": "resolve", "value": null }], + "results": { + "soccer": [], + "resetMenstrualCycle": null, + "resetMouthwash": null + } + }, + "rejection": { + "outcomes": [{ "kind": "reject", "message": "Deterministic host callback failure" }], + "results": {} + }, + "delayed": { + "delayMs": 75, + "outcomes": [{ "kind": "resolve", "delayMs": 75 }], + "results": { + "soccer": [ + { + "code": "TEST-SOC-DELAYED", + "title": "Delayed occupation result" + } + ], + "resetMenstrualCycle": { "completed": true }, + "resetMouthwash": { "completed": true } + } + } + } +} diff --git a/tests/corpus/lock.json b/tests/corpus/lock.json new file mode 100644 index 0000000..46db5a4 --- /dev/null +++ b/tests/corpus/lock.json @@ -0,0 +1,361 @@ +{ + "$schema": "./schemas/lock.schema.json", + "schemaVersion": 1, + "repository": "episphere/questionnaire", + "repositoryUrl": "https://github.com/episphere/questionnaire.git", + "defaultBranch": "main", + "commit": "7ae99a22af325cf0e14be047a7636462db9bfd50", + "cacheRoot": ".cache/questionnaire", + "sourceDirectory": "prod", + "environment": "prod", + "expectedFileCount": 29, + "expectedModuleCount": 15, + "expectedLanguageCounts": { + "en": 15, + "es": 14 + }, + "questionIdParityExceptions": [ + { + "module": "module1", + "onlyIn": "en", + "ids": [ + "D_927516732" + ] + }, + { + "module": "module2", + "onlyIn": "es", + "ids": [ + "D_186488870" + ] + }, + { + "module": "moduleBiospecimen", + "onlyIn": "es", + "ids": [ + "SRVMTW_MODULEINTRO_V1R0" + ] + } + ], + "files": [ + { + "module": "module1", + "locale": "en", + "language": "en", + "path": "prod/module1.txt", + "questName": "D_726699695_V2", + "version": "4.0", + "sourceQuestionCount": 316, + "sha256": "c36e2ceb44808d43538d04f43c336085ec73c05614ad5791fbb6e58582b8e107", + "gitBlobSha": "862e5a2e53acc7b40774665445626b0961090443" + }, + { + "module": "module1", + "locale": "es", + "language": "es", + "path": "prod/module1Spanish.txt", + "questName": "D_726699695_V2", + "version": "4.0", + "sourceQuestionCount": 315, + "sha256": "f7a768ede6036e68742ea7d0bea3f0debc3f30aa4ab51774b637a9fbbe9e1d2e", + "gitBlobSha": "af57a0cec8372e876af4db1d9deb11093179fccc" + }, + { + "module": "module2", + "locale": "en", + "language": "en", + "path": "prod/module2.txt", + "questName": "D_745268907_V2", + "version": "2.3", + "sourceQuestionCount": 359, + "sha256": "a7b9dba4edd27d55ccb3830b0b54b8d4fa7003a1d2a9c1c79749aaeeaa4f664f", + "gitBlobSha": "151e62fca9dcc8a20c3759d7f807709c82b956cb" + }, + { + "module": "module2", + "locale": "es", + "language": "es", + "path": "prod/module2Spanish.txt", + "questName": "D_745268907_V2", + "version": "2.3", + "sourceQuestionCount": 360, + "sha256": "c8545d3286b47909c9f9048df73467459cccabbeb7dfe7676756ea9474164bb5", + "gitBlobSha": "e5bdfc6ba6bf90be23d6625770f2fbcd7de482d3" + }, + { + "module": "module3", + "locale": "en", + "language": "en", + "path": "prod/module3.txt", + "questName": "D_965707586", + "version": "1.6", + "sourceQuestionCount": 314, + "sha256": "73f6a1ba8bb0ce4b3c1cb56566b3c46b0d8552ff299be81a57ed6c4d4597ea8f", + "gitBlobSha": "5270dc457bbf49abdb7e443ee18c64056274740d" + }, + { + "module": "module3", + "locale": "es", + "language": "es", + "path": "prod/module3Spanish.txt", + "questName": "D_965707586", + "version": "1.6", + "sourceQuestionCount": 314, + "sha256": "4c78a6b2f3db419e87c7701b938a30c56c87c0c4ae2864d9eeb33e16a207e3b8", + "gitBlobSha": "f148cb40d11fe00311e3a2a5199a06edcdbee4e1" + }, + { + "module": "module4", + "locale": "en", + "language": "en", + "path": "prod/module4.txt", + "questName": "D_716117817", + "version": "2.0", + "sourceQuestionCount": 367, + "sha256": "008faf8420a7a657692c7e04a3615f171c53f675411fd3fd049f329a62124fe4", + "gitBlobSha": "02a954153ae23ec64e4d9b17a64c4241e85c9654" + }, + { + "module": "module4", + "locale": "es", + "language": "es", + "path": "prod/module4Spanish.txt", + "questName": "D_716117817", + "version": "2.0", + "sourceQuestionCount": 367, + "sha256": "c1705fb2632f8c2fda8f22a716fb006eecacde9aa75b153611c4e7f15aec5c3f", + "gitBlobSha": "e13239cd096cef57672ac3a0d5bb94559aa15a4c" + }, + { + "module": "module2024ConnectExperience", + "locale": "en", + "language": "en", + "path": "prod/module2024ConnectExperience.txt", + "questName": "D_506648060", + "version": "1.1", + "sourceQuestionCount": 43, + "sha256": "70f70eb07acec537f634c96b66c29596e68baee11812f367bfc89317cb818fe7", + "gitBlobSha": "ab9dd0d671250abda77e1ddd5d0e51d98f39897d" + }, + { + "module": "module2024ConnectExperience", + "locale": "es", + "language": "es", + "path": "prod/module2024ConnectExperienceSpanish.txt", + "questName": "D_506648060", + "version": "1.1", + "sourceQuestionCount": 43, + "sha256": "1bb9757b35913beca279af01bb99ee9c776684fbf7d056289f71c898e5cfef9f", + "gitBlobSha": "7be966c2ddd98bba5c1def60a245796d48f5bb98" + }, + { + "module": "module2026ROIPreferences", + "locale": "en", + "language": "en", + "path": "prod/module2026ROIPreferences.txt", + "questName": "D_312845734", + "version": "1.0", + "sourceQuestionCount": 16, + "sha256": "bb14766a8d7fd626d2234254db78c1c7e84b0503f4734ddafa31239763b160a9", + "gitBlobSha": "57f35700286c391850a2ec359870aa702e8ad808" + }, + { + "module": "module2026ROIPreferences", + "locale": "es", + "language": "es", + "path": "prod/module2026ROIPreferencesSpanish.txt", + "questName": "D_312845734", + "version": "1.0", + "sourceQuestionCount": 16, + "sha256": "c31cf93e57d0c26fb630b940d906cce1f42440e434dea4049ca46859a8423227", + "gitBlobSha": "ba7be12487f90e1aa862d4f18870b8b8c45e0dd7" + }, + { + "module": "moduleBiospecimen", + "locale": "en", + "language": "en", + "path": "prod/moduleBiospecimen.txt", + "questName": "D_299215535", + "version": "1.4", + "sourceQuestionCount": 52, + "sha256": "3511079715fecaf0498d2a3f197f3cce400a9a4674af0947ff740b68ddfb5d22", + "gitBlobSha": "420ac712f7f4f2307ac8d12494b8ff96537ae68a" + }, + { + "module": "moduleBiospecimen", + "locale": "es", + "language": "es", + "path": "prod/moduleBiospecimenSpanish.txt", + "questName": "D_299215535", + "version": "1.4", + "sourceQuestionCount": 53, + "sha256": "16f3ae9976bc65506da60281fe17e27f6701109e6a5b67d9b65e044805259192", + "gitBlobSha": "ed33370e87f565bf25e31a2e36583f7701f1d504" + }, + { + "module": "moduleCOVID19", + "locale": "en", + "language": "en", + "path": "prod/moduleCOVID19.txt", + "questName": "D_793330426", + "version": "1.3", + "sourceQuestionCount": 97, + "sha256": "5d3dfa29799998557fd85d168869f9b1f122d3d957f443a7a423ec12304c6426", + "gitBlobSha": "114e83e88cacad5070bc75a54d5ec7eb319da4a2" + }, + { + "module": "moduleCOVID19", + "locale": "es", + "language": "es", + "path": "prod/moduleCOVID19Spanish.txt", + "questName": "D_793330426", + "version": "1.3", + "sourceQuestionCount": 97, + "sha256": "3aec9221ab9dedd091d46b6eee3de1085e49f3a7c93e98e4ee8b47da969b9c43", + "gitBlobSha": "3d9ad926b9075409c920fb6827194beae69a9b53" + }, + { + "module": "moduleCancerScreeningHistory", + "locale": "en", + "language": "en", + "path": "prod/moduleCancerScreeningHistory.txt", + "questName": "D_369168474", + "version": "1.2", + "sourceQuestionCount": 144, + "sha256": "65207c189b9b62836afc43cb80c12b416612b3d246a71d257804e0924c7817b2", + "gitBlobSha": "60befaf4c26ff151308cea9b0149d7cba353c237" + }, + { + "module": "moduleCancerScreeningHistory", + "locale": "es", + "language": "es", + "path": "prod/moduleCancerScreeningHistorySpanish.txt", + "questName": "D_369168474", + "version": "1.2", + "sourceQuestionCount": 144, + "sha256": "dd93c2e963d9c0f2eb202667a45748ca576aefed4157f315a6e8ddef95eb7c38", + "gitBlobSha": "6bf4cc485646af1d3caeb7d028f849af9b27c4b5" + }, + { + "module": "moduleClinicalBloodUrine", + "locale": "en", + "language": "en", + "path": "prod/moduleClinicalBloodUrine.txt", + "questName": "D_826163434", + "version": "1.4", + "sourceQuestionCount": 21, + "sha256": "da2014adad00d371c0044fdfe1095af570e253c293ea3e88023045d51762a91e", + "gitBlobSha": "6787fad926c177db284bb7a1a4919c9277ab2ea8" + }, + { + "module": "moduleClinicalBloodUrine", + "locale": "es", + "language": "es", + "path": "prod/moduleClinicalBloodUrineSpanish.txt", + "questName": "D_826163434", + "version": "1.4", + "sourceQuestionCount": 21, + "sha256": "2898151d137c3f33ecf857b4f82561d6c42ae0c6c1947d47a1317ba24c9de987", + "gitBlobSha": "c6b36385c2f751a80d032db0d1ae494420b76f70" + }, + { + "module": "moduleDietScreener", + "locale": "en", + "language": "en", + "path": "prod/moduleDietScreener", + "questName": "D_515124081", + "version": "1.0", + "sourceQuestionCount": 3, + "sha256": "bfe990625139d13c6125245a441c8fcb666bcbac905e577ef374df8f708f5dca", + "gitBlobSha": "8cba1d923c79f508c7071946b35f4800e71cfb2d" + }, + { + "module": "moduleDietScreener", + "locale": "es", + "language": "es", + "path": "prod/moduleDietScreenerSpanish.txt", + "questName": "D_515124081", + "version": "1.0", + "sourceQuestionCount": 3, + "sha256": "40a21887c151720e2ce65450154e0ab8b21f5d94c6324de3f8417b35e2d5564a", + "gitBlobSha": "b0ae2f197d3f779ac7b77c8391adbdc8c8f46d59" + }, + { + "module": "moduleMenstrual", + "locale": "en", + "language": "en", + "path": "prod/moduleMenstrual.txt", + "questName": "D_912367929", + "version": "1.1", + "sourceQuestionCount": 5, + "sha256": "13de3a43aed31befdda5be4c805a3b885e36df9275f742a19ca931e360e159b2", + "gitBlobSha": "ccb21cd54e37537f29cd233f06a068fea80a21c6" + }, + { + "module": "moduleMenstrual", + "locale": "es", + "language": "es", + "path": "prod/moduleMenstrualSpanish.txt", + "questName": "D_912367929", + "version": "1.1", + "sourceQuestionCount": 5, + "sha256": "6424161524cbfd2ba9884e0db0106f1dcb37132473125de2abeeae9c8ae6cc8f", + "gitBlobSha": "90938931c3073074aabc5ca960f490c0065a5184" + }, + { + "module": "moduleMouthwash", + "locale": "en", + "language": "en", + "path": "prod/moduleMouthwash.txt", + "questName": "D_390351864", + "version": "1.1", + "sourceQuestionCount": 34, + "sha256": "5d352f4bebe7c0a16cb835c24b44c93c7ce00af4a9b5c8a345ce3662036c70fd", + "gitBlobSha": "d5927538e61b6865c08598cc8e64bceca4de8435" + }, + { + "module": "moduleMouthwash", + "locale": "es", + "language": "es", + "path": "prod/moduleMouthwashSpanish.txt", + "questName": "D_390351864", + "version": "1.1", + "sourceQuestionCount": 34, + "sha256": "e7516c4836ad310bc8be26f7c96cb9e1f23ee0bcbc529677e34db332fd76637a", + "gitBlobSha": "d5cb40d2b4cb94f3f976e0279f975bc4b53e5fc8" + }, + { + "module": "moduleQoL", + "locale": "en", + "language": "en", + "path": "prod/moduleQoL.txt", + "questName": "D_601305072", + "version": "1.0", + "sourceQuestionCount": 11, + "sha256": "6e1e8c3af357783996395be2a6b6907cf02f936c5cb8275717477f3e05c51b7e", + "gitBlobSha": "53866c298eeaf084f911960f31ff9ff0b89f449a" + }, + { + "module": "moduleQoL", + "locale": "es", + "language": "es", + "path": "prod/moduleQoLSpanish.txt", + "questName": "D_601305072", + "version": "1.0", + "sourceQuestionCount": 11, + "sha256": "c068aab47cb94768399a635e7e98a48078e29e36391db55987ce33701edbf4a1", + "gitBlobSha": "5f66e5c0be990b5946bec022529cafe21802cc53" + }, + { + "module": "ssnModule", + "locale": "en", + "language": "en", + "path": "prod/ssnModule.txt", + "questName": "D_166676176", + "version": "1.0", + "sourceQuestionCount": 3, + "sha256": "400e5fb271c1d434c6c397f370b32fced6d16ea2a2f589720ac220ba82bbeb1b", + "gitBlobSha": "ae65c7a998fc636da237cb8a65f81849cf1ac57a" + } + ] +} diff --git a/tests/corpus/module4AddressStructure.spec.js b/tests/corpus/module4AddressStructure.spec.js new file mode 100644 index 0000000..74fe170 --- /dev/null +++ b/tests/corpus/module4AddressStructure.spec.js @@ -0,0 +1,200 @@ +import { existsSync, readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { describe, expect, it, vi } from 'vitest'; + +import { corpusCacheDirectory, loadCorpusLock } from './scripts/lib/corpus.mjs'; + +const QUESTION_MARKER = /^\[([A-Z_][A-Z0-9_#]*)(?:[?!])?(?:,[^\]]*)?\]/gm; +const INPUT_ID = /\|__\|id=(D_\d+)/g; +const QUOTED_ID = /"(D_\d+)"/g; +const PIPED_ID = /\{\$(D_\d+)\}/g; +const EXPECTED_INTERSECTION_COUNT = 26; + +function unique(values) { + return [...new Set(values)]; +} + +function idsIn(text, pattern) { + return [...text.matchAll(pattern)].map(([, id]) => id); +} + +function questionBlocks(markdown) { + const markers = [...markdown.matchAll(QUESTION_MARKER)]; + return markers.map((marker, index) => ({ + id: marker[1], + source: markdown.slice(marker.index, markers[index + 1]?.index), + header: markdown.slice(marker.index, markdown.indexOf('\n', marker.index)), + })); +} + +function fieldId(source, labels) { + const labelPattern = labels.join('|'); + const match = source.match(new RegExp(`(?:${labelPattern})\\s*\\|__\\|id=(D_\\d+)`, 'i')); + return match?.[1] ?? null; +} + +function summaryDisplayArms(source) { + const armStarts = [...source.matchAll(/\|displayif=([^|]+)\|/g)]; + return armStarts.flatMap((armStart, index) => { + const addressCondition = armStart[1].match(/^(noneExist|someExist)\(([^)]*)\)/); + if (!addressCondition) return []; + const contentStart = armStart.index + armStart[0].length; + const nextArmStart = armStarts[index + 1]?.index ?? source.length; + const lineEnd = source.indexOf('\n', contentStart); + const contentBoundary = Math.min(nextArmStart, lineEnd === -1 ? source.length : lineEnd); + const authoredContent = source.slice(contentStart, contentBoundary); + const closingPipe = authoredContent.lastIndexOf('|'); + const content = closingPipe === -1 ? authoredContent : authoredContent.slice(0, closingPipe); + return [{ + kind: addressCondition[1], + conditionIds: idsIn(addressCondition[2], QUOTED_ID), + content, + contentIds: idsIn(content, PIPED_ID), + }]; + }); +} + +function getAddressFamily(blocks, intersectionIndex) { + const primary = blocks[intersectionIndex - 2]; + const backup = blocks[intersectionIndex - 1]; + const intersection = blocks[intersectionIndex]; + const summary = blocks[intersectionIndex + 1]; + const primaryInputIds = idsIn(primary.source, INPUT_ID); + const backupInputIds = idsIn(backup.source, INPUT_ID); + const crossStreetIds = idsIn(intersection.source, INPUT_ID); + const conditionIds = idsIn(intersection.header, QUOTED_ID); + + return { + primary, + backup, + intersection, + summary, + primaryInputIds, + backupInputIds, + crossStreetIds, + conditionIds, + streetNumber: fieldId(primary.source, ['Street number', 'Número de la calle']), + streetName: fieldId(primary.source, ['Full Street name', 'Nombre completo de la calle']), + localityIds: [ + fieldId(primary.source, ['City', 'Ciudad']), + fieldId(primary.source, ['State/Province', 'Estado o provincia']), + fieldId(primary.source, ['Zip code', 'Código postal']), + fieldId(primary.source, ['Country', 'País']), + ], + }; +} + +async function readModule4(locale) { + const lock = await loadCorpusLock(); + const cacheDirectory = corpusCacheDirectory(lock); + const entry = lock.files.find((file) => file.module === 'module4' && file.locale === locale); + const filePath = resolve(cacheDirectory, entry.path); + return existsSync(filePath) ? readFileSync(filePath, 'utf8') : null; +} + +const english = await readModule4('en'); +const spanish = await readModule4('es'); + +describe.skipIf(!english || !spanish)('locked Module 4 address-family structure @corpus', () => { + + it('characterizes the three duplicated displayif tokens as a math assignment that retains the intended fallback predicate', async () => { + const blocks = questionBlocks(english); + const duplicated = blocks.filter(({ header }) => header.includes('displayif=displayif=')); + const spanishDuplicated = questionBlocks(spanish).filter(({ header }) => header.includes('displayif=displayif=')); + expect(duplicated.map(({ id }) => id)).toEqual(['D_398762737', 'D_205492848', 'D_763354979']); + expect(spanishDuplicated.map(({ id }) => id)).toEqual(duplicated.map(({ id }) => id)); + + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = {}; + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + stateModule.getStateManager().loadInitialSurveyState({ D_288498031: 'Lakeview' }); + const { initializeCustomMathJSFunctions } = await import('../../customMathJSImplementation.js'); + initializeCustomMathJSFunctions(); + const { evaluateCondition } = await import('../../evaluateConditions.js'); + + const condition = duplicated[0].header.match(/displayif=(.*?)\]/)?.[1]; + expect(condition).toBe('displayif=noneExist("D_985267931","D_111275683") and someExist("D_288498031","D_195845897","D_936129960","D_924583345","D_536516743","D_283900560","D_467947502","D_368486703")'); + expect(evaluateCondition(condition)).toBe(true); + stateModule.getStateManager().loadInitialSurveyState({}); + expect(evaluateCondition(condition)).toBe(false); + }); + + it('keeps every primary, backup, cross-street, and summary family internally consistent in English and Spanish', () => { + const byLocale = new Map([ + ['en', questionBlocks(english)], + ['es', questionBlocks(spanish)], + ]); + const familiesByLocale = new Map(); + + for (const [locale, blocks] of byLocale) { + const intersectionIndexes = blocks.flatMap((block, index) => ( + /cross streets|intersección/i.test(block.source) ? [index] : [] + )); + expect(intersectionIndexes, `${locale} intersection-family count`).toHaveLength(EXPECTED_INTERSECTION_COUNT); + + const families = intersectionIndexes.map((index) => getAddressFamily(blocks, index)); + familiesByLocale.set(locale, families); + + for (const family of families) { + expect(family.primaryInputIds.length, `${locale} ${family.primary.id} primary field count`).toBeGreaterThanOrEqual(7); + expect(unique(family.primaryInputIds), `${locale} ${family.primary.id} primary IDs`).toEqual(family.primaryInputIds); + expect(family.backupInputIds, `${locale} ${family.backup.id} backup fields`).toHaveLength(4); + expect(family.crossStreetIds, `${locale} ${family.intersection.id} cross streets`).toHaveLength(2); + expect(family.streetNumber, `${locale} ${family.primary.id} street number`).toBeTruthy(); + expect(family.streetName, `${locale} ${family.primary.id} street name`).toBeTruthy(); + expect(family.localityIds, `${locale} ${family.primary.id} locality fields`).not.toContain(null); + + const expectedConditionIds = unique([ + family.streetNumber, + family.streetName, + ...family.backupInputIds, + ...family.localityIds, + ]).sort(); + expect(unique(family.conditionIds).sort(), `${locale} ${family.intersection.id} fallback predicate IDs`) + .toEqual(expectedConditionIds); + expect(family.intersection.header, `${locale} ${family.intersection.id} no-street predicate`) + .toContain(`noneExist("${family.streetNumber}","${family.streetName}")`); + expect(family.intersection.header, `${locale} ${family.intersection.id} locality predicate`) + .toContain('someExist('); + + const expectedSummaryIds = unique([ + ...family.primaryInputIds.slice(family.primaryInputIds.indexOf(family.streetNumber)), + ...family.backupInputIds, + ...family.crossStreetIds, + ]); + const summaryArms = summaryDisplayArms(family.summary.source); + expect(summaryArms, `${locale} ${family.summary.id} display arms`).toHaveLength(2); + const emptyArm = summaryArms.find(({ kind }) => kind === 'noneExist'); + const populatedArm = summaryArms.find(({ kind }) => kind === 'someExist'); + expect(emptyArm, `${locale} ${family.summary.id} empty arm`).toBeTruthy(); + expect(populatedArm, `${locale} ${family.summary.id} populated arm`).toBeTruthy(); + expect(unique(emptyArm.conditionIds).sort(), `${locale} ${family.summary.id} empty condition IDs`) + .toEqual(unique(populatedArm.conditionIds).sort()); + expect(emptyArm.contentIds, `${locale} ${family.summary.id} empty arm must not pipe address fields`) + .toEqual([]); + expect(unique(populatedArm.contentIds).sort(), `${locale} ${family.summary.id} populated address fields`) + .toEqual([...expectedSummaryIds].sort()); + } + } + + const englishFamilies = familiesByLocale.get('en'); + const spanishFamilies = familiesByLocale.get('es'); + expect(englishFamilies.map((family) => family.intersection.id)).toEqual( + spanishFamilies.map((family) => family.intersection.id), + ); + for (let index = 0; index < englishFamilies.length; index += 1) { + const englishFamily = englishFamilies[index]; + const spanishFamily = spanishFamilies[index]; + expect(spanishFamily.primary.id).toBe(englishFamily.primary.id); + expect(spanishFamily.backup.id).toBe(englishFamily.backup.id); + expect(spanishFamily.summary.id).toBe(englishFamily.summary.id); + expect(spanishFamily.primaryInputIds).toEqual(englishFamily.primaryInputIds); + expect(spanishFamily.backupInputIds).toEqual(englishFamily.backupInputIds); + expect(spanishFamily.crossStreetIds).toEqual(englishFamily.crossStreetIds); + expect(unique(spanishFamily.conditionIds).sort()).toEqual(unique(englishFamily.conditionIds).sort()); + } + }); +}); diff --git a/tests/corpus/responsePipingStructure.spec.js b/tests/corpus/responsePipingStructure.spec.js new file mode 100644 index 0000000..58e2a03 --- /dev/null +++ b/tests/corpus/responsePipingStructure.spec.js @@ -0,0 +1,283 @@ +import { existsSync, readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { describe, expect, it, vi } from 'vitest'; + +import en from '../../i18n/en.js'; +import es from '../../i18n/es.js'; +import { QuestionProcessor } from '../../questionProcessor.js'; +import { moduleParams } from '../../questionnaire.js'; +import { initializeStateManager, getStateManager } from '../../stateManager.js'; +import { initializeCustomMathJSFunctions } from '../../customMathJSImplementation.js'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; +import { corpusCacheDirectory, loadCorpusLock } from './scripts/lib/corpus.mjs'; + +const DIRECT_PIPE = /^([A-Za-z_]\w*(?:\.\w+)?)$/; +const TOKEN = /\{([$#])([^}]+)\}/g; +const QUESTION_MARKER = /^\[([A-Z_][A-Z0-9_#]*)(?:[?!])?(?:\|[^\]]+\|)?(?:,[^\]]*)?\]/gm; +const LOOP_SUFFIX = /_\d+_\d+$/; + +const EXPECTED_DIRECT_PIPES = { + 'module1/en': 71, + 'module1/es': 71, + 'module2/en': 19, + 'module2/es': 19, + 'module3/en': 171, + 'module3/es': 171, + 'module4/en': 5048, + 'module4/es': 5049, + 'module2024ConnectExperience/en': 3, + 'module2024ConnectExperience/es': 3, + 'moduleCOVID19/en': 30, + 'moduleCOVID19/es': 30, + 'moduleCancerScreeningHistory/en': 1, + 'moduleCancerScreeningHistory/es': 1, +}; + +const EXPECTED_TOKEN_COUNTS = { + direct: 10687, + user: 162, + expression: 74, + hashExpression: 89, + other: 0, +}; + +const EXPECTED_DISPLAY_LISTS = [ + 'module1/en/SIBSUM', + 'module1/en/CHILDSUM', + 'module1/es/SIBSUM', + 'module1/es/CHILDSUM', + 'moduleCOVID19/en/SRVCOV_COVSUMMARY_V1R0', + 'moduleCOVID19/es/SRVCOV_COVSUMMARY_V1R0', +]; + +const EXPECTED_LOCALE_DIFFERENCES = { + module3: { + englishOnly: ['D_349510816<-D_970325871'], + spanishOnly: ['D_349510816<-D_700173707'], + }, + module4: { + englishOnly: [], + spanishOnly: ['D_720221117<-D_814137809'], + }, +}; + +function withoutComments(markdown) { + return markdown.replace(/\/\/.*|\/\*[\s\S]*?\*\//g, ''); +} + +function questionBlocks(markdown) { + const markers = [...markdown.matchAll(QUESTION_MARKER)]; + return markers.map((marker, index) => ({ + id: marker[1], + source: markdown.slice(marker.index, markers[index + 1]?.index ?? markdown.length), + })); +} + +function tokenInventory(markdown) { + const counts = { + direct: 0, + user: 0, + expression: 0, + hashExpression: 0, + other: 0, + }; + + for (const token of markdown.matchAll(TOKEN)) { + const [, prefix, value] = token; + if (prefix === '#') counts.hashExpression += 1; + else if (value.startsWith('u:')) counts.user += 1; + else if (value.startsWith('e:')) counts.expression += 1; + else if (DIRECT_PIPE.test(value)) counts.direct += 1; + else counts.other += 1; + } + + return counts; +} + +function gridRanges(markdown) { + const grid = /\|grid[!?]*\|([^|]+)\|[^|]*\|[^|]*\|[^|]*\|/g; + return [...markdown.matchAll(grid)].flatMap((match) => { + const destination = match[1].match(/\bid=["']?([A-Za-z_]\w*)/i)?.[1]; + return destination ? [{ start: match.index, end: match.index + match[0].length, destination }] : []; + }); +} + +function directPairs(markdown) { + const markers = [...markdown.matchAll(QUESTION_MARKER)]; + const grids = gridRanges(markdown); + return [...markdown.matchAll(TOKEN)].flatMap((token) => { + const [, prefix, source] = token; + if (prefix !== '$' || !DIRECT_PIPE.test(source)) return []; + + const grid = grids.find(({ start, end }) => token.index >= start && token.index < end); + const questionIndex = markers.findLastIndex(({ index }) => index <= token.index); + const destination = grid?.destination ?? markers[questionIndex]?.[1]; + return destination ? [{ destination, source }] : []; + }); +} + +function displayListDestinations(markdown, module, locale) { + return questionBlocks(markdown) + .filter(({ source }) => source.includes('|displayList(')) + .map(({ id }) => `${module}/${locale}/${id}`); +} + +function normaliseLoopId(id) { + return id.replace(LOOP_SUFFIX, ''); +} + +function pipePairKey({ destination, source }) { + return `${normaliseLoopId(destination)}<-${normaliseLoopId(source)}`; +} + +function configureProcessor(locale) { + moduleParams.i18n = locale === 'es' ? es : en; + moduleParams.errorLogger = vi.fn(); + moduleParams.previousResults = {}; + moduleParams.asyncQuestionsMap = {}; + moduleParams.renderFullQuestionList = true; + moduleParams.isRenderer = true; + initializeStateManager(); + initializeCustomMathJSFunctions(); +} + +function directSourcesInText(text) { + return new Set( + [...text.matchAll(TOKEN)] + .flatMap(([, prefix, value]) => (prefix === '$' && DIRECT_PIPE.test(value) ? [normaliseLoopId(value)] : [])), + ); +} + +function gridSourcesInHTML(html) { + return new Set( + [...html.matchAll(/data-gridreplace=([^\s>]+)/g)] + .map(([, source]) => normaliseLoopId(decodeURIComponent(source.replace(/["']/g, '')))) + .filter((source) => DIRECT_PIPE.test(source)), + ); +} + +function parsedPipePairs(markdown, locale, authoredPairs) { + configureProcessor(locale); + const processor = new QuestionProcessor(markdown, { + current_date: new Date('2024-07-15T12:00:00.000Z'), + current_day: 15, + current_month: 7, + current_month_str: 6, + current_year: 2024, + quest_format_date: '2024-7-15', + }, locale === 'es' ? es : en); + getStateManager().setQuestionProcessor(processor); + const parsed = new Set(); + const remaining = new Set(authoredPairs); + for (const [index, question] of processor.questions.entries()) { + const destination = normaliseLoopId(question.questionIDExactSearch); + const questionSources = new Set([ + ...directSourcesInText(question.questText ?? ''), + ...gridSourcesInHTML(question.formElement ?? ''), + ]); + if (![...questionSources].some((source) => remaining.has(`${destination}<-${source}`))) continue; + + const form = processor.processQuestion(index); + form.querySelectorAll('[forid]').forEach((element) => { + parsed.add(pipePairKey({ + destination: form.id, + source: decodeURIComponent(element.getAttribute('forid')), + })); + }); + form.querySelectorAll('[data-gridreplace]').forEach((element) => { + const source = decodeURIComponent(element.dataset.gridreplace); + if (DIRECT_PIPE.test(source)) parsed.add(pipePairKey({ destination: form.id, source })); + }); + parsed.forEach((pair) => remaining.delete(pair)); + if (remaining.size === 0) break; + } + + return parsed; +} + +const lock = await loadCorpusLock(); +const cacheDirectory = corpusCacheDirectory(lock); +const entries = lock.files.map((entry) => ({ + ...entry, + path: resolve(cacheDirectory, entry.path), +})); +const unavailable = entries.filter(({ path }) => !existsSync(path)); + +describe.skipIf(unavailable.length > 0)('locked production response-piping structure @corpus', () => { + it('inventories every direct pipe while keeping profile, computed, and expression tokens separate', () => { + const directCounts = {}; + const totals = { direct: 0, user: 0, expression: 0, hashExpression: 0, other: 0 }; + const displayLists = []; + + for (const entry of entries) { + const markdown = withoutComments(readFileSync(entry.path, 'utf8')); + const inventory = tokenInventory(markdown); + const key = `${entry.module}/${entry.locale}`; + directCounts[key] = inventory.direct; + displayLists.push(...displayListDestinations(markdown, entry.module, entry.locale)); + Object.keys(totals).forEach((name) => { + totals[name] += inventory[name]; + }); + } + + expect(directCounts).toEqual({ + ...Object.fromEntries(entries.map(({ module, locale }) => [`${module}/${locale}`, 0])), + ...EXPECTED_DIRECT_PIPES, + }); + expect(totals).toEqual(EXPECTED_TOKEN_COUNTS); + expect(displayLists).toEqual(EXPECTED_DISPLAY_LISTS); + }); + + it('keeps every authored destination/source pair in its own forid or grid-replacement runtime output', () => { + for (const entry of entries) { + const markdown = withoutComments(readFileSync(entry.path, 'utf8')); + const authoredPairs = new Set(directPairs(markdown).map(pipePairKey)); + if (authoredPairs.size === 0) continue; + const parsedPairs = parsedPipePairs(markdown, entry.locale, authoredPairs); + + expect( + [...authoredPairs].filter((pair) => !parsedPairs.has(pair)), + `${entry.module}/${entry.locale}: every authored destination/source pair must survive in its own runtime form`, + ).toEqual([]); + } + }, 180_000); + + it('keeps English and Spanish source/destination pairs aligned except for the two audited differences', () => { + const pairsByModule = new Map(); + for (const entry of entries) { + if (!['en', 'es'].includes(entry.locale)) continue; + const markdown = withoutComments(readFileSync(entry.path, 'utf8')); + const pairs = new Set(directPairs(markdown).map(pipePairKey)); + const localePairs = pairsByModule.get(entry.module) ?? new Map(); + localePairs.set(entry.locale, pairs); + pairsByModule.set(entry.module, localePairs); + } + + for (const [module, localePairs] of pairsByModule) { + const english = localePairs.get('en'); + const spanish = localePairs.get('es'); + if (!english || !spanish) continue; + const actual = { + englishOnly: [...english].filter((pair) => !spanish.has(pair)).sort(), + spanishOnly: [...spanish].filter((pair) => !english.has(pair)).sort(), + }; + expect(actual, `${module} EN/ES direct-pipe parity`).toEqual( + EXPECTED_LOCALE_DIFFERENCES[module] ?? { englishOnly: [], spanishOnly: [] }, + ); + } + }); + + it('keeps rendered forid spans and grid replacements available through the participant render boundary', async () => { + const entry = entries.find(({ module, locale }) => module === 'module3' && locale === 'en'); + const quest = await renderFreshQuest({ + markdown: readFileSync(entry.path, 'utf8'), + params: { activate: false, isRenderer: true, lang: 'en' }, + }); + + expect(quest.rendered).toBe(true); + expect(quest.root.querySelectorAll('[forid]').length).toBeGreaterThan(100); + const gridSources = [...quest.root.querySelectorAll('[data-gridreplace]')] + .map((element) => decodeURIComponent(element.dataset.gridreplace)); + expect(gridSources).toEqual(expect.arrayContaining(['D_141874857', 'D_250456537', 'D_480426504'])); + }); +}); diff --git a/tests/corpus/schemas/lock.schema.json b/tests/corpus/schemas/lock.schema.json new file mode 100644 index 0000000..5c36e7d --- /dev/null +++ b/tests/corpus/schemas/lock.schema.json @@ -0,0 +1,106 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://episphere.github.io/quest/tests/corpus/lock.schema.json", + "title": "Quest questionnaire corpus lock", + "type": "object", + "required": [ + "schemaVersion", + "repository", + "repositoryUrl", + "defaultBranch", + "commit", + "cacheRoot", + "sourceDirectory", + "environment", + "expectedFileCount", + "expectedModuleCount", + "expectedLanguageCounts", + "questionIdParityExceptions", + "files" + ], + "properties": { + "$schema": { "type": "string" }, + "schemaVersion": { "const": 1 }, + "repository": { "type": "string", "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$" }, + "repositoryUrl": { "type": "string", "format": "uri" }, + "defaultBranch": { "type": "string", "minLength": 1 }, + "commit": { "type": "string", "pattern": "^[0-9a-f]{40}$" }, + "cacheRoot": { "type": "string", "minLength": 1 }, + "sourceDirectory": { "const": "prod" }, + "environment": { "const": "prod" }, + "expectedFileCount": { "type": "integer", "minimum": 1 }, + "expectedModuleCount": { "type": "integer", "minimum": 1 }, + "expectedLanguageCounts": { + "type": "object", + "required": ["en", "es"], + "properties": { + "en": { "type": "integer", "minimum": 1 }, + "es": { "type": "integer", "minimum": 0 } + }, + "additionalProperties": false + }, + "questionIdParityExceptions": { + "type": "array", + "items": { + "type": "object", + "required": ["module", "onlyIn", "ids"], + "properties": { + "module": { "type": "string", "minLength": 1 }, + "onlyIn": { "enum": ["en", "es"] }, + "ids": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + } + }, + "additionalProperties": false + } + }, + "files": { + "type": "array", + "minItems": 1, + "items": { + "type": "object", + "required": [ + "module", + "locale", + "language", + "path", + "questName", + "version", + "sourceQuestionCount", + "sha256", + "gitBlobSha" + ], + "properties": { + "module": { "type": "string", "minLength": 1 }, + "locale": { "enum": ["en", "es"] }, + "language": { "enum": ["en", "es"] }, + "path": { "type": "string", "pattern": "^prod/.+" }, + "questName": { "type": "string", "pattern": "^\\w+$" }, + "version": { "type": "string", "minLength": 1 }, + "sourceQuestionCount": { "type": "integer", "minimum": 1 }, + "sha256": { "type": "string", "pattern": "^[0-9a-f]{64}$" }, + "gitBlobSha": { "type": "string", "pattern": "^[0-9a-f]{40}$" } + }, + "oneOf": [ + { + "properties": { + "locale": { "const": "en" }, + "language": { "const": "en" } + } + }, + { + "properties": { + "locale": { "const": "es" }, + "language": { "const": "es" } + } + } + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false +} diff --git a/tests/corpus/scripts/fetchCorpus.mjs b/tests/corpus/scripts/fetchCorpus.mjs new file mode 100644 index 0000000..bcdd50e --- /dev/null +++ b/tests/corpus/scripts/fetchCorpus.mjs @@ -0,0 +1,141 @@ +import { execFile } from 'node:child_process'; +import { promisify } from 'node:util'; +import { copyFile, mkdir, mkdtemp, readFile, rename, rm, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { + corpusCacheDirectory, + getLockedArtifacts, + loadCorpusLock, + resolveCorpusCacheRoot, + sha256Buffer, + gitBlobShaBuffer, + verifyCorpus, +} from './lib/corpus.mjs'; +import { DEFAULT_LOCK_PATH, pathExists } from './lib/artifacts.mjs'; + +const execFileAsync = promisify(execFile); +const SCRIPT_PATH = fileURLToPath(import.meta.url); + +function parseArguments(argv) { + const options = { + lockPath: DEFAULT_LOCK_PATH, + cacheRoot: null, + force: false, + }; + + for (let index = 0; index < argv.length; index += 1) { + const argument = argv[index]; + if (argument === '--lock') options.lockPath = path.resolve(argv[++index]); + else if (argument === '--cache-root') options.cacheRoot = path.resolve(argv[++index]); + else if (argument === '--force') options.force = true; + else throw new Error(`Unknown argument: ${argument}`); + } + return options; +} + +export function questionnaireArchiveUrl(lock) { + return `https://github.com/${lock.repository}/archive/${lock.commit}.tar.gz`; +} + +export async function downloadArchive(lock, archivePath, { fetchImpl = fetch } = {}) { + const url = questionnaireArchiveUrl(lock); + const response = await fetchImpl(url, { + headers: { 'User-Agent': 'quest-corpus-fetcher' }, + redirect: 'follow', + }); + + if (!response.ok) { + throw new Error(`Public GitHub archive fetch failed with HTTP ${response.status}.`); + } + await writeFile(archivePath, Buffer.from(await response.arrayBuffer())); +} + +async function extractArchive(archivePath, destination) { + await mkdir(destination, { recursive: true }); + try { + await execFileAsync('tar', [ + '-xzf', archivePath, + '-C', destination, + '--strip-components=1', + ]); + } catch (error) { + throw new Error(`Unable to extract the locked questionnaire archive: ${error.stderr || error.message}`); + } +} + +async function copyLockedArtifacts(lock, checkoutRoot, destinationRoot) { + for (const artifact of getLockedArtifacts(lock)) { + const source = path.join(checkoutRoot, ...artifact.path.split('/')); + const buffer = await readFile(source); + const actualSha256 = sha256Buffer(buffer); + const actualGitBlobSha = gitBlobShaBuffer(buffer); + if (actualSha256 !== artifact.sha256 || actualGitBlobSha !== artifact.gitBlobSha) { + throw new Error(`${artifact.path}: archive bytes do not match the locked hashes.`); + } + + const destination = path.join(destinationRoot, ...artifact.path.split('/')); + await mkdir(path.dirname(destination), { recursive: true }); + await copyFile(source, destination); + } +} + +async function installStagedCache(stagedCache, cacheDir, temporaryRoot) { + const previousCache = path.join(temporaryRoot, 'previous-cache'); + const hadExistingCache = await pathExists(cacheDir); + + if (hadExistingCache) await rename(cacheDir, previousCache); + + try { + await rename(stagedCache, cacheDir); + } catch (error) { + if (hadExistingCache && !(await pathExists(cacheDir))) { + await rename(previousCache, cacheDir); + } + throw error; + } +} + +async function main() { + const options = parseArguments(process.argv.slice(2)); + const lock = await loadCorpusLock(options.lockPath); + const cacheRoot = resolveCorpusCacheRoot(lock, options.cacheRoot); + const cacheDir = corpusCacheDirectory(lock, cacheRoot); + + if (await pathExists(cacheDir)) { + if (!options.force) { + const summary = await verifyCorpus({ lock, cacheDir }); + console.log(`Corpus cache already verified at ${cacheDir} (${summary.files} prod files).`); + return; + } + } + + await mkdir(cacheRoot, { recursive: true }); + const temporaryRoot = await mkdtemp(path.join(cacheRoot, `.${lock.commit}.tmp-`)); + const archivePath = path.join(temporaryRoot, 'questionnaire.tar.gz'); + const checkoutRoot = path.join(temporaryRoot, 'checkout'); + const stagedCache = path.join(temporaryRoot, 'cache'); + + try { + await downloadArchive(lock, archivePath); + await extractArchive(archivePath, checkoutRoot); + await mkdir(stagedCache, { recursive: true }); + await copyLockedArtifacts(lock, checkoutRoot, stagedCache); + const summary = await verifyCorpus({ lock, cacheDir: stagedCache }); + await installStagedCache(stagedCache, cacheDir, temporaryRoot); + await rm(temporaryRoot, { recursive: true, force: true }); + console.log(`Fetched and verified ${summary.files} production files at ${lock.commit}.`); + console.log(cacheDir); + } catch (error) { + await rm(temporaryRoot, { recursive: true, force: true }); + throw error; + } +} + +if (process.argv[1] && path.resolve(process.argv[1]) === SCRIPT_PATH) { + main().catch((error) => { + console.error(error.cause?.message ?? error.message); + process.exitCode = 1; + }); +} diff --git a/tests/corpus/scripts/lib/artifacts.mjs b/tests/corpus/scripts/lib/artifacts.mjs new file mode 100644 index 0000000..13dad24 --- /dev/null +++ b/tests/corpus/scripts/lib/artifacts.mjs @@ -0,0 +1,23 @@ +import { access, readFile } from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const THIS_FILE = fileURLToPath(import.meta.url); + +export const REPOSITORY_ROOT = path.resolve(path.dirname(THIS_FILE), '../../../..'); +export const CORPUS_ROOT = path.join(REPOSITORY_ROOT, 'tests', 'corpus'); +export const DEFAULT_LOCK_PATH = path.join(CORPUS_ROOT, 'lock.json'); +export const DEFAULT_CACHE_ROOT = path.join(REPOSITORY_ROOT, '.cache', 'questionnaire'); + +export async function pathExists(filePath) { + try { + await access(filePath); + return true; + } catch { + return false; + } +} + +export async function readJson(filePath) { + return JSON.parse(await readFile(filePath, 'utf8')); +} diff --git a/tests/corpus/scripts/lib/corpus.mjs b/tests/corpus/scripts/lib/corpus.mjs new file mode 100644 index 0000000..1b632cc --- /dev/null +++ b/tests/corpus/scripts/lib/corpus.mjs @@ -0,0 +1,377 @@ +import { createHash } from 'node:crypto'; +import { readdir, readFile, stat } from 'node:fs/promises'; +import path from 'node:path'; + +import { + DEFAULT_CACHE_ROOT, + DEFAULT_LOCK_PATH, + REPOSITORY_ROOT, + pathExists, + readJson, +} from './artifacts.mjs'; + +export const LOCK_SCHEMA_VERSION = 1; + +const COMMIT_PATTERN = /^[0-9a-f]{40}$/; +const SHA256_PATTERN = /^[0-9a-f]{64}$/; +const GIT_BLOB_PATTERN = /^[0-9a-f]{40}$/; +const REPOSITORY_PATTERN = /^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/; +const QUESTION_MARKER_PATTERN = /^\[([A-Z_][A-Z0-9_#]*)([?!]?)(?:\|([^|\]]+)\|?)?(,.*?)?\]/gm; + +export class CorpusVerificationError extends Error { + constructor(errors) { + super(`Questionnaire corpus verification failed:\n- ${errors.join('\n- ')}`); + this.name = 'CorpusVerificationError'; + this.errors = errors; + } +} + +export function sha256Buffer(value) { + return createHash('sha256').update(value).digest('hex'); +} + +export function gitBlobShaBuffer(value) { + const buffer = Buffer.isBuffer(value) ? value : Buffer.from(value); + return createHash('sha1') + .update(`blob ${buffer.length}\0`) + .update(buffer) + .digest('hex'); +} + +export function stripMarkdownComments(markdown) { + return markdown.replace(/\/\/.*|\/\*[\s\S]*?\*\//g, ''); +} + +export function analyzeQuestionnaireText(markdown) { + const questionIds = [...stripMarkdownComments(markdown).matchAll(QUESTION_MARKER_PATTERN)] + .map((match) => match[1]); + const seen = new Set(); + const duplicateQuestionIds = [...new Set(questionIds.filter((questionId) => { + if (seen.has(questionId)) return true; + seen.add(questionId); + return false; + }))].sort(); + + return { + questName: markdown.match(/\{"name":"(\w*)"}/)?.[1] ?? null, + version: markdown.match(/\/\/\s*\{"version":"([^"]+)"}/)?.[1] ?? null, + questionIds, + duplicateQuestionIds, + endCount: questionIds.filter((questionId) => questionId === 'END').length, + }; +} + +export function isSafeRepositoryPath(repositoryPath) { + return typeof repositoryPath === 'string' + && repositoryPath.length > 0 + && !path.posix.isAbsolute(repositoryPath) + && !repositoryPath.includes('\\') + && path.posix.normalize(repositoryPath) === repositoryPath + && !repositoryPath.split('/').includes('..'); +} + +function addError(errors, condition, message) { + if (!condition) errors.push(message); +} + +export function validateCorpusLock(lock) { + const errors = []; + + addError(errors, lock && typeof lock === 'object', 'Lock must be a JSON object.'); + if (!lock || typeof lock !== 'object') throw new CorpusVerificationError(errors); + + addError(errors, lock.schemaVersion === LOCK_SCHEMA_VERSION, + `schemaVersion must be ${LOCK_SCHEMA_VERSION}.`); + addError(errors, REPOSITORY_PATTERN.test(lock.repository ?? ''), + 'repository must use the owner/name form.'); + addError(errors, typeof lock.repositoryUrl === 'string' && lock.repositoryUrl.startsWith('https://'), + 'repositoryUrl must be an HTTPS URL.'); + addError(errors, typeof lock.defaultBranch === 'string' && lock.defaultBranch.length > 0, + 'defaultBranch is required for drift checks.'); + addError(errors, COMMIT_PATTERN.test(lock.commit ?? ''), 'commit must be a full 40-character Git SHA.'); + addError(errors, isSafeRepositoryPath(lock.cacheRoot ?? ''), 'cacheRoot must be repository-relative and safe.'); + addError(errors, lock.sourceDirectory === 'prod', 'sourceDirectory must be prod.'); + addError(errors, lock.environment === 'prod', 'environment must be prod.'); + addError(errors, Array.isArray(lock.files) && lock.files.length > 0, 'files must be a non-empty array.'); + + if (!Array.isArray(lock.files)) throw new CorpusVerificationError(errors); + + addError(errors, lock.files.length === lock.expectedFileCount, + `Expected ${lock.expectedFileCount} files but lock contains ${lock.files.length}.`); + + const paths = new Set(); + const moduleLocales = new Set(); + + for (const [index, entry] of lock.files.entries()) { + const label = entry?.path ?? `files[${index}]`; + addError(errors, entry && typeof entry === 'object', `${label}: entry must be an object.`); + if (!entry || typeof entry !== 'object') continue; + + addError(errors, typeof entry.module === 'string' && entry.module.length > 0, + `${label}: module is required.`); + addError(errors, entry.locale === 'en' || entry.locale === 'es', + `${label}: locale must be en or es.`); + addError(errors, entry.language === 'en' || entry.language === 'es', + `${label}: language must be en or es.`); + addError(errors, entry.language === entry.locale, + `${label}: language must match locale.`); + addError(errors, isSafeRepositoryPath(entry.path), `${label}: path is unsafe.`); + addError(errors, entry.path?.startsWith(`${lock.sourceDirectory}/`), + `${label}: production path must be below ${lock.sourceDirectory}/.`); + addError(errors, typeof entry.questName === 'string' && /^\w+$/.test(entry.questName), + `${label}: questName is invalid.`); + addError(errors, typeof entry.version === 'string' && entry.version.length > 0, + `${label}: version is required.`); + addError(errors, Number.isInteger(entry.sourceQuestionCount) && entry.sourceQuestionCount > 0, + `${label}: sourceQuestionCount must be a positive integer.`); + addError(errors, SHA256_PATTERN.test(entry.sha256 ?? ''), `${label}: sha256 is invalid.`); + addError(errors, GIT_BLOB_PATTERN.test(entry.gitBlobSha ?? ''), `${label}: gitBlobSha is invalid.`); + + if (paths.has(entry.path)) errors.push(`${label}: duplicate production path.`); + paths.add(entry.path); + + const moduleLocale = `${entry.module}:${entry.locale}`; + if (moduleLocales.has(moduleLocale)) errors.push(`${label}: duplicate module/locale ${moduleLocale}.`); + moduleLocales.add(moduleLocale); + } + + const modules = new Map(); + for (const entry of lock.files) { + if (!modules.has(entry.module)) modules.set(entry.module, new Map()); + modules.get(entry.module).set(entry.locale, entry); + } + + addError(errors, modules.size === lock.expectedModuleCount, + `Expected ${lock.expectedModuleCount} modules but found ${modules.size}.`); + + const localeCounts = lock.files.reduce((counts, entry) => { + counts[entry.locale] = (counts[entry.locale] ?? 0) + 1; + return counts; + }, {}); + for (const locale of ['en', 'es']) { + addError(errors, localeCounts[locale] === lock.expectedLanguageCounts?.[locale], + `Expected ${lock.expectedLanguageCounts?.[locale]} ${locale} files but found ${localeCounts[locale] ?? 0}.`); + } + + for (const [moduleName, locales] of modules) { + addError(errors, locales.has('en'), `${moduleName}: every module must have an English questionnaire.`); + if (locales.has('en') && locales.has('es')) { + addError(errors, locales.get('en').questName === locales.get('es').questName, + `${moduleName}: English and Spanish questName values differ.`); + addError(errors, locales.get('en').version === locales.get('es').version, + `${moduleName}: English and Spanish versions differ.`); + } + } + + const exceptionKeys = new Set(); + for (const exception of lock.questionIdParityExceptions ?? []) { + const key = `${exception.module}:${exception.onlyIn}`; + addError(errors, modules.has(exception.module), `${key}: exception references an unknown module.`); + addError(errors, exception.onlyIn === 'en' || exception.onlyIn === 'es', + `${key}: onlyIn must be en or es.`); + addError(errors, Array.isArray(exception.ids) && exception.ids.length > 0, + `${key}: ids must be a non-empty array.`); + addError(errors, !exceptionKeys.has(key), `${key}: duplicate parity exception.`); + exceptionKeys.add(key); + } + + if (errors.length > 0) throw new CorpusVerificationError(errors); + return lock; +} + +export async function loadCorpusLock(lockPath = DEFAULT_LOCK_PATH) { + return validateCorpusLock(await readJson(lockPath)); +} + +export function resolveCorpusCacheRoot(lock, overrideCacheRoot = null) { + return overrideCacheRoot + ? path.resolve(overrideCacheRoot) + : path.resolve(REPOSITORY_ROOT, lock.cacheRoot ?? path.relative(REPOSITORY_ROOT, DEFAULT_CACHE_ROOT)); +} + +export function corpusCacheDirectory(lock, overrideCacheRoot = null) { + return path.join(resolveCorpusCacheRoot(lock, overrideCacheRoot), lock.commit); +} + +export function getLockedArtifacts(lock) { + return lock.files.map((entry) => ({ + path: entry.path, + sha256: entry.sha256, + gitBlobSha: entry.gitBlobSha, + })).sort((left, right) => left.path.localeCompare(right.path)); +} + +function decodeUtf8(buffer, label, errors) { + try { + return new TextDecoder('utf-8', { fatal: true }).decode(buffer); + } catch { + errors.push(`${label}: content is not valid UTF-8.`); + return null; + } +} + +async function listFilesRecursively(directory, baseDirectory = directory) { + if (!(await pathExists(directory))) return []; + const entries = await readdir(directory, { withFileTypes: true }); + const files = []; + + for (const entry of entries) { + const fullPath = path.join(directory, entry.name); + if (entry.isDirectory()) { + files.push(...await listFilesRecursively(fullPath, baseDirectory)); + } else if (entry.isFile()) { + files.push(path.relative(baseDirectory, fullPath).split(path.sep).join('/')); + } else { + files.push(path.relative(baseDirectory, fullPath).split(path.sep).join('/')); + } + } + + return files.sort(); +} + +function sortedDifference(left, right) { + return [...left].filter((value) => !right.has(value)).sort(); +} + +function expectedParityExceptions(lock) { + return new Map((lock.questionIdParityExceptions ?? []).map((exception) => ([ + `${exception.module}:${exception.onlyIn}`, + [...exception.ids].sort(), + ]))); +} + +function sameStringArray(left, right) { + return left.length === right.length && left.every((value, index) => value === right[index]); +} + +export async function verifyCorpus({ + lock, + cacheDir = corpusCacheDirectory(lock), + requireExactFileSet = true, +} = {}) { + validateCorpusLock(lock); + const errors = []; + const analyses = new Map(); + const expectedArtifacts = getLockedArtifacts(lock); + + if (!(await pathExists(cacheDir))) { + throw new CorpusVerificationError([ + `Cache directory is missing: ${cacheDir}`, + 'Run npm run corpus:fetch before corpus-backed tests.', + ]); + } + + const cacheStats = await stat(cacheDir); + if (!cacheStats.isDirectory()) { + throw new CorpusVerificationError([`Cache path is not a directory: ${cacheDir}`]); + } + + if (requireExactFileSet) { + const expectedPaths = new Set(expectedArtifacts.map((artifact) => artifact.path)); + const actualPaths = new Set((await listFilesRecursively(cacheDir)) + .filter((repositoryPath) => repositoryPath.startsWith(`${lock.sourceDirectory}/`))); + for (const missingPath of sortedDifference(expectedPaths, actualPaths)) { + errors.push(`${missingPath}: locked file is missing from the cache.`); + } + for (const unexpectedPath of sortedDifference(actualPaths, expectedPaths)) { + errors.push(`${unexpectedPath}: unexpected file exists in the corpus cache.`); + } + } + + for (const artifact of expectedArtifacts) { + const filePath = path.join(cacheDir, ...artifact.path.split('/')); + let buffer; + try { + buffer = await readFile(filePath); + } catch (error) { + errors.push(`${artifact.path}: unable to read locked file (${error.code ?? error.message}).`); + continue; + } + + const actualSha256 = sha256Buffer(buffer); + if (actualSha256 !== artifact.sha256) { + errors.push(`${artifact.path}: SHA-256 mismatch (expected ${artifact.sha256}, got ${actualSha256}).`); + } + const actualGitBlobSha = gitBlobShaBuffer(buffer); + if (actualGitBlobSha !== artifact.gitBlobSha) { + errors.push(`${artifact.path}: Git blob SHA mismatch (expected ${artifact.gitBlobSha}, got ${actualGitBlobSha}).`); + } + + const text = decodeUtf8(buffer, artifact.path, errors); + if (text === null) continue; + } + + for (const entry of lock.files) { + const filePath = path.join(cacheDir, ...entry.path.split('/')); + let text; + try { + text = decodeUtf8(await readFile(filePath), entry.path, errors); + } catch { + continue; + } + if (text === null) continue; + + const analysis = analyzeQuestionnaireText(text); + analyses.set(entry.path, analysis); + if (analysis.questName !== entry.questName) { + errors.push(`${entry.path}: questName mismatch (expected ${entry.questName}, got ${analysis.questName}).`); + } + if (analysis.version !== entry.version) { + errors.push(`${entry.path}: version mismatch (expected ${entry.version}, got ${analysis.version}).`); + } + if (analysis.questionIds.length !== entry.sourceQuestionCount) { + errors.push(`${entry.path}: source question count mismatch (expected ${entry.sourceQuestionCount}, got ${analysis.questionIds.length}).`); + } + if (analysis.endCount !== 1) { + errors.push(`${entry.path}: expected exactly one END marker, found ${analysis.endCount}.`); + } + if (analysis.duplicateQuestionIds.length > 0) { + errors.push(`${entry.path}: duplicate question IDs: ${analysis.duplicateQuestionIds.join(', ')}.`); + } + + } + + const exceptionMap = expectedParityExceptions(lock); + const usedExceptionKeys = new Set(); + const moduleEntries = Map.groupBy(lock.files, (entry) => entry.module); + for (const [moduleName, entries] of moduleEntries) { + const englishEntry = entries.find((entry) => entry.locale === 'en'); + const spanishEntry = entries.find((entry) => entry.locale === 'es'); + if (!englishEntry || !spanishEntry) continue; + + const englishAnalysis = analyses.get(englishEntry.path); + const spanishAnalysis = analyses.get(spanishEntry.path); + if (!englishAnalysis || !spanishAnalysis) continue; + + const englishIds = new Set(englishAnalysis.questionIds); + const spanishIds = new Set(spanishAnalysis.questionIds); + for (const [locale, actualDifference] of [ + ['en', sortedDifference(englishIds, spanishIds)], + ['es', sortedDifference(spanishIds, englishIds)], + ]) { + const key = `${moduleName}:${locale}`; + const expectedDifference = exceptionMap.get(key) ?? []; + if (!sameStringArray(actualDifference, expectedDifference)) { + errors.push(`${moduleName}: IDs only in ${locale} differ from the lock baseline (expected [${expectedDifference.join(', ')}], got [${actualDifference.join(', ')}]).`); + } + if (exceptionMap.has(key)) usedExceptionKeys.add(key); + } + } + + for (const key of exceptionMap.keys()) { + if (!usedExceptionKeys.has(key)) errors.push(`${key}: parity exception was not evaluated.`); + } + + if (errors.length > 0) throw new CorpusVerificationError(errors); + + return { + commit: lock.commit, + files: lock.files.length, + modules: new Set(lock.files.map((entry) => entry.module)).size, + localeCounts: lock.files.reduce((counts, entry) => { + counts[entry.locale] = (counts[entry.locale] ?? 0) + 1; + return counts; + }, {}), + sourceQuestionCount: lock.files.reduce((total, entry) => total + entry.sourceQuestionCount, 0), + }; +} diff --git a/tests/corpus/scripts/lib/structuralCatalog.mjs b/tests/corpus/scripts/lib/structuralCatalog.mjs new file mode 100644 index 0000000..638065b --- /dev/null +++ b/tests/corpus/scripts/lib/structuralCatalog.mjs @@ -0,0 +1,483 @@ +/** + * Build a reviewable description of a questionnaire after Quest has parsed it. + * + * This deliberately describes structure only. It does not try to evaluate + * conditions, navigate a questionnaire, or infer reachable paths. Keeping + * those concerns separate makes the catalog an honest denominator for the + * later path-generation work. + */ + +export const STRUCTURAL_CATALOG_SCHEMA_VERSION = 1; + +const LOOP_SUFFIX = /_(\d+)_(\d+)[?!]?$/; +const ASYNC_MARKUP_ID = /^\[([^\]|?!]+)[?!]?\]$/; + +function asArray(value) { + return value == null ? [] : Array.from(value); +} + +function normaliseString(value) { + return typeof value === 'string' ? value.trim() : ''; +} + +function optionalString(value) { + const normalised = normaliseString(value); + return normalised || null; +} + +function safeDecode(value) { + const text = normaliseString(value); + if (!text) return ''; + + try { + return decodeURIComponent(text); + } catch { + // A malformed percent escape is useful evidence in the catalog. Preserve + // it instead of making generation fail before the malformed form can be + // reviewed. + return text; + } +} + +function getAttribute(element, attributeName) { + if (!element?.getAttribute) return null; + return element.getAttribute(attributeName); +} + +function getSkipTarget(element) { + return optionalString(getAttribute(element, 'skipto')) + ?? optionalString(getAttribute(element, 'skipTo')); +} + +function sourceQuestionId(question, index) { + return optionalString(question?.questionID) ?? `__question_${index}`; +} + +function exactQuestionId(question, fallback) { + return optionalString(question?.questionIDExactSearch) + ?? fallback.replace(/[?!]$/, ''); +} + +function controlDescriptor(element) { + const tag = element?.tagName?.toLowerCase?.() ?? 'unknown'; + const type = optionalString(getAttribute(element, 'type')) + ?? (tag === 'textarea' ? 'textarea' : tag === 'select' ? 'select' : null); + const name = optionalString(getAttribute(element, 'name')); + const value = optionalString(getAttribute(element, 'value')); + + return { + id: optionalString(getAttribute(element, 'id')), + tag, + type, + name, + value, + required: element?.hasAttribute?.('required') ?? false, + noResponse: element?.classList?.contains?.('noresponse') ?? false, + }; +} + +function conditionScope(element, form, attribute) { + if (element === form) return 'question'; + if (attribute === 'if' && getSkipTarget(element)) return 'conditional-transition'; + if (element?.hasAttribute?.('data-gridrow')) return 'grid-row'; + if (element?.classList?.contains?.('grid-displayif')) return 'grid-inline'; + if (element?.classList?.contains?.('response')) return 'response'; + if (element?.classList?.contains?.('displayif')) return 'inline'; + return 'element'; +} + +function groupControls(elements) { + const groups = []; + const groupsByKey = new Map(); + + for (const element of elements) { + const descriptor = controlDescriptor(element); + const key = [descriptor.tag, descriptor.type ?? '', descriptor.name ?? ''].join('\u0000'); + let group = groupsByKey.get(key); + + if (!group) { + group = { + tag: descriptor.tag, + type: descriptor.type, + name: descriptor.name, + count: 0, + required: false, + noResponseCount: 0, + values: [], + }; + groupsByKey.set(key, group); + groups.push(group); + } + + group.count += 1; + group.required ||= descriptor.required; + group.noResponseCount += descriptor.noResponse ? 1 : 0; + if (descriptor.value && !group.values.includes(descriptor.value)) { + group.values.push(descriptor.value); + } + } + + return groups; +} + +function isResponseControl(element) { + const tag = element?.tagName?.toLowerCase?.(); + const type = normaliseString(getAttribute(element, 'type')).toLowerCase(); + if (tag === 'textarea' || tag === 'select') return true; + if (tag !== 'input') return false; + return !['button', 'hidden', 'reset', 'submit'].includes(type); +} + +function conditionSitesForForm(form, questionId, questionIndex) { + const sites = []; + const conditionAttributes = ['displayif', 'data-displayif', 'if']; + const candidates = [form, ...asArray(form?.querySelectorAll?.('[displayif], [data-displayif], [if]'))]; + + for (const element of candidates) { + for (const attribute of conditionAttributes) { + const raw = getAttribute(element, attribute); + if (raw == null) continue; + sites.push({ + questionId, + questionIndex, + scope: conditionScope(element, form, attribute), + element: element?.tagName?.toLowerCase?.() ?? 'unknown', + elementId: optionalString(getAttribute(element, 'id')), + attribute, + rawCondition: normaliseString(raw), + decodedCondition: safeDecode(raw), + }); + } + } + + return sites; +} + +function questionKind(questionId, grid) { + const exactId = questionId.replace(/[?!]$/, ''); + if (grid) return 'grid'; + if (exactId === 'END') return 'terminal'; + if (exactId === 'END_OF_LOOP') return 'loop-boundary'; + if (exactId.startsWith('_CONTINUE')) return 'loop-continuation'; + return 'question'; +} + +function transitionKind(element) { + const descriptor = controlDescriptor(element); + if (descriptor.type !== 'hidden') return 'response'; + if (descriptor.noResponse) return 'no-response'; + if (getAttribute(element, 'if') != null) return 'conditional-default'; + return 'default'; +} + +function gridRecord(form, questionId, questionIndex) { + if (!form?.hasAttribute?.('data-grid')) return null; + + const rows = asArray(form.querySelectorAll?.('[data-gridrow]')); + const gridCells = asArray(form.querySelectorAll?.('[data-gridcell]')); + const responseTypes = [...new Set(gridCells + .map((cell) => normaliseString(getAttribute(cell, 'type')).toLowerCase()) + .filter(Boolean))]; + + return { + questionId, + questionIndex, + rowQuestionIds: rows.map((row) => optionalString(getAttribute(row, 'data-question-id'))).filter(Boolean), + rowCount: rows.length, + responseTypes, + responseValues: [...new Set(gridCells + .map((cell) => optionalString(getAttribute(cell, 'value'))) + .filter(Boolean))], + }; +} + +function loopMarkerForForm(form, questionId, questionIndex) { + const loopIndex = optionalString(getAttribute(form, 'loopindx')); + const firstQuestion = optionalString(getAttribute(form, 'firstquestion')); + const loopMaxQuestionId = optionalString(getAttribute(form, 'loopmax')); + if (!loopIndex && !firstQuestion && !loopMaxQuestionId) return null; + + return { + questionId, + questionIndex, + loopIndex, + firstQuestion, + loopMaxQuestionId, + }; +} + +function buildLoopDefinitions(loopStarts, questionRecords) { + const byLoopIndex = new Map(); + + for (const start of loopStarts) { + const key = start.loopIndex ?? 'unknown'; + const definition = byLoopIndex.get(key) ?? { + loopIndex: start.loopIndex, + loopMaxQuestionIds: [], + iterationFirstQuestionIds: [], + iterationStartIndexes: [], + }; + if (start.loopMaxQuestionId && !definition.loopMaxQuestionIds.includes(start.loopMaxQuestionId)) { + definition.loopMaxQuestionIds.push(start.loopMaxQuestionId); + } + definition.iterationFirstQuestionIds.push(start.questionId); + definition.iterationStartIndexes.push(start.questionIndex); + byLoopIndex.set(key, definition); + } + + return [...byLoopIndex.values()].map((definition) => { + const firstIndex = definition.iterationStartIndexes[0]; + const lastStartIndex = definition.iterationStartIndexes.at(-1); + const boundary = questionRecords.find(({ index, id }) => ( + index > lastStartIndex && id === 'END_OF_LOOP' + )); + const continuationQuestionIds = questionRecords + .filter(({ index, id }) => ( + index >= firstIndex + && index < (boundary?.index ?? Number.POSITIVE_INFINITY) + && id.startsWith(`_CONTINUE${definition.loopIndex}`) + )) + .map(({ id }) => id); + + return { + ...definition, + iterationCount: definition.iterationStartIndexes.length, + continuationQuestionIds, + boundaryIndex: boundary?.index ?? null, + }; + }); +} + +function asyncIdSet(asyncQuestionIds) { + const ids = new Set(); + for (const value of asyncQuestionIds ?? []) { + const text = normaliseString(value); + if (!text) continue; + const markupMatch = text.match(ASYNC_MARKUP_ID); + ids.add(markupMatch ? markupMatch[1] : text.replace(/[?!]$/, '')); + } + return ids; +} + +function structuralTargetResolver(processor) { + const questions = asArray(processor?.questions); + + return (target) => { + const normalisedTarget = normaliseString(target); + if (!normalisedTarget) return { resolved: false, kind: 'missing-target' }; + + // `findQuestion('END')` intentionally resolves to the final processed + // question, regardless of where an END marker occurs in source. + if (normalisedTarget === 'END') { + const index = questions.length - 1; + return index >= 0 + ? { resolved: true, kind: 'terminal', index, questionId: sourceQuestionId(questions[index], index) } + : { resolved: false, kind: 'missing-terminal' }; + } + + const exactIndex = questions.findIndex((question, index) => ( + exactQuestionId(question, sourceQuestionId(question, index)) === normalisedTarget + )); + if (exactIndex !== -1) { + return { + resolved: true, + kind: 'exact', + index: exactIndex, + questionId: sourceQuestionId(questions[exactIndex], exactIndex), + }; + } + + const prefixIndex = questions.findIndex((question, index) => ( + sourceQuestionId(question, index).startsWith(normalisedTarget) + )); + if (prefixIndex !== -1) { + return { + resolved: true, + kind: normalisedTarget.startsWith('_CONTINUE') ? 'loop-continue' : 'prefix', + index: prefixIndex, + questionId: sourceQuestionId(questions[prefixIndex], prefixIndex), + }; + } + + return { resolved: false, kind: 'unresolved' }; + }; +} + +function normaliseResolution(value) { + if (value === true) return { resolved: true, kind: 'custom' }; + if (value === false || value == null) return { resolved: false, kind: 'custom' }; + if (typeof value === 'number') return { resolved: true, kind: 'custom', index: value }; + if (typeof value === 'string') return { resolved: true, kind: 'custom', questionId: value }; + if (typeof value === 'object') { + return { + resolved: Boolean(value.resolved), + kind: optionalString(value.kind) ?? 'custom', + ...(Number.isInteger(value.index) ? { index: value.index } : {}), + ...(optionalString(value.questionId) ? { questionId: optionalString(value.questionId) } : {}), + }; + } + return { resolved: false, kind: 'custom' }; +} + +/** + * Build a catalog record from a processed Quest survey. + * + * `resolveTarget`, receives `(target, context)` and may return + * a boolean, an index/string, or `{ resolved, kind, index?, questionId? }`. + * The fallback performs structural exact/prefix lookup only. Corpus tests + * should inject a resolver that calls Quest when virtual loop routing matters. + */ +export function buildStructuralCatalogRecord({ + record = {}, + processor, + renderedRoot, + asyncQuestionIds = [], + resolveTarget, +} = {}) { + const questions = asArray(processor?.questions); + const renderedForms = asArray(renderedRoot?.querySelectorAll?.('form.question')); + const asyncIds = asyncIdSet(asyncQuestionIds); + const targetResolver = typeof resolveTarget === 'function' + ? resolveTarget + : structuralTargetResolver(processor); + const questionRecords = []; + const transitions = []; + const conditionSites = []; + const grids = []; + const loops = []; + let controlCount = 0; + let responseControlCount = 0; + + for (const [questionIndex, question] of questions.entries()) { + const questionId = sourceQuestionId(question, questionIndex); + const form = processor?.processedQuestions?.get?.(questionIndex) ?? renderedForms[questionIndex] ?? null; + const controls = asArray(form?.querySelectorAll?.('input, textarea, select, button')); + const skipElements = asArray(form?.querySelectorAll?.('[skipto], [skipTo]')); + const formConditions = conditionSitesForForm(form, questionId, questionIndex); + const grid = gridRecord(form, questionId, questionIndex); + const loop = loopMarkerForForm(form, questionId, questionIndex); + const loopSuffix = questionId.match(LOOP_SUFFIX); + + controlCount += controls.length; + responseControlCount += controls.filter(isResponseControl).length; + conditionSites.push(...formConditions); + if (grid) grids.push(grid); + if (loop) loops.push(loop); + + const transitionStart = transitions.length; + for (const element of skipElements) { + const target = getSkipTarget(element); + if (!target) continue; + const resolution = normaliseResolution(targetResolver(target, { + record, + processor, + sourceQuestion: question, + questionId, + questionIndex, + element, + })); + const descriptor = controlDescriptor(element); + transitions.push({ + from: questionId, + fromIndex: questionIndex, + to: target, + kind: transitionKind(element), + control: { + id: descriptor.id, + tag: descriptor.tag, + type: descriptor.type, + name: descriptor.name, + value: descriptor.value, + noResponse: descriptor.noResponse, + rawCondition: optionalString(getAttribute(element, 'if')), + decodedCondition: getAttribute(element, 'if') == null + ? null + : safeDecode(getAttribute(element, 'if')), + }, + resolution, + }); + } + + questionRecords.push({ + index: questionIndex, + id: questionId, + exactId: exactQuestionId(question, questionId), + domId: optionalString(getAttribute(form, 'id')), + kind: questionKind(questionId, grid), + async: asyncIds.has(exactQuestionId(question, questionId)), + loopIteration: loopSuffix + ? { iteration: Number(loopSuffix[1]), copy: Number(loopSuffix[2]) } + : null, + controls: groupControls(controls), + controlCount: controls.length, + responseControlCount: controls.filter(isResponseControl).length, + conditionSiteCount: formConditions.length, + explicitTransitionCount: transitions.length - transitionStart, + }); + } + + const unresolvedByTarget = new Map(); + transitions.forEach((transition, transitionIndex) => { + if (transition.resolution.resolved) return; + const unresolved = unresolvedByTarget.get(transition.to) ?? { + target: transition.to, + transitionIndexes: [], + fromQuestionIds: [], + }; + unresolved.transitionIndexes.push(transitionIndex); + if (!unresolved.fromQuestionIds.includes(transition.from)) { + unresolved.fromQuestionIds.push(transition.from); + } + unresolvedByTarget.set(transition.to, unresolved); + }); + + const loopContinuationQuestionIds = questionRecords + .filter(({ id }) => id.startsWith('_CONTINUE')) + .map(({ id }) => id); + const loopSentinelIndexes = questionRecords + .filter(({ id }) => id === 'END_OF_LOOP') + .map(({ index }) => index); + const loopDefinitions = buildLoopDefinitions(loops, questionRecords); + + return { + schemaVersion: STRUCTURAL_CATALOG_SCHEMA_VERSION, + module: record.module ?? null, + locale: record.locale ?? record.language ?? null, + language: record.language ?? record.locale ?? null, + path: record.path ?? null, + questName: record.questName ?? null, + version: record.version ?? null, + authoredMarkerCount: Number.isInteger(record.sourceQuestionCount) ? record.sourceQuestionCount : null, + processedQuestionIds: questionRecords.map(({ id }) => id), + questionRecords, + transitions, + conditionSites, + grids, + loops: { + definitions: loopDefinitions, + starts: loops, + continuationQuestionIds: loopContinuationQuestionIds, + sentinelIndexes: loopSentinelIndexes, + loopExpandedQuestionCount: questionRecords.filter(({ loopIteration }) => loopIteration !== null).length, + }, + unresolvedTargets: [...unresolvedByTarget.values()], + counts: { + authoredMarkerCount: Number.isInteger(record.sourceQuestionCount) ? record.sourceQuestionCount : null, + processorQuestionCount: questions.length, + processedQuestionCount: processor?.processedQuestions?.size ?? questionRecords.filter(({ domId }) => domId !== null).length, + renderedFormCount: renderedForms.length, + controlCount, + responseControlCount, + explicitTransitionCount: transitions.length, + sequentialAdjacencyCount: Math.max(questions.length - 1, 0), + resolvedExplicitTransitionCount: transitions.filter(({ resolution }) => resolution.resolved).length, + unresolvedExplicitTransitionCount: transitions.filter(({ resolution }) => !resolution.resolved).length, + conditionSiteCount: conditionSites.length, + gridQuestionCount: grids.length, + gridRowCount: grids.reduce((count, grid) => count + grid.rowCount, 0), + loopStartCount: loops.length, + loopDefinitionCount: loopDefinitions.length, + loopExpandedQuestionCount: questionRecords.filter(({ loopIteration }) => loopIteration !== null).length, + }, + }; +} diff --git a/tests/corpus/scripts/verifyCorpus.mjs b/tests/corpus/scripts/verifyCorpus.mjs new file mode 100644 index 0000000..5c3b8e4 --- /dev/null +++ b/tests/corpus/scripts/verifyCorpus.mjs @@ -0,0 +1,32 @@ +import path from 'node:path'; + +import { DEFAULT_LOCK_PATH } from './lib/artifacts.mjs'; +import { corpusCacheDirectory, loadCorpusLock, verifyCorpus } from './lib/corpus.mjs'; + +function parseArguments(argv) { + const options = { lockPath: DEFAULT_LOCK_PATH, cacheRoot: null }; + for (let index = 0; index < argv.length; index += 1) { + const argument = argv[index]; + if (argument === '--lock') options.lockPath = path.resolve(argv[++index]); + else if (argument === '--cache-root') options.cacheRoot = path.resolve(argv[++index]); + else throw new Error(`Unknown argument: ${argument}`); + } + return options; +} + +async function main() { + const options = parseArguments(process.argv.slice(2)); + const lock = await loadCorpusLock(options.lockPath); + const cacheDir = corpusCacheDirectory(lock, options.cacheRoot); + const summary = await verifyCorpus({ lock, cacheDir }); + + console.log(`Verified questionnaire corpus at ${summary.commit}:`); + console.log(`- ${summary.files} prod files (${summary.localeCounts.en} en, ${summary.localeCounts.es} es)`); + console.log(`- ${summary.modules} logical modules`); + console.log(`- ${summary.sourceQuestionCount} authored question markers`); +} + +main().catch((error) => { + console.error(error.message); + process.exitCode = 1; +}); diff --git a/tests/corpus/structuralCatalog.json b/tests/corpus/structuralCatalog.json new file mode 100644 index 0000000..2fc6800 --- /dev/null +++ b/tests/corpus/structuralCatalog.json @@ -0,0 +1,28520 @@ +{ + "schemaVersion": 1, + "corpus": { + "repository": "episphere/questionnaire", + "commit": "7ae99a22af325cf0e14be047a7636462db9bfd50", + "environment": "prod", + "fileCount": 29, + "moduleCount": 15 + }, + "oracle": { + "boundary": "transform.render with isRenderer=true and activate=false", + "hostPersona": "external-branch-primary", + "fixedDate": "2024-07-15T12:00:00.000Z", + "sequentialAdjacency": "Adjacent runtimeQuestionIds; path feasibility is intentionally not inferred." + }, + "counts": { + "authoredMarkerCount": 3568, + "processorQuestionCount": 8302, + "processedQuestionCount": 8302, + "renderedFormCount": 8302, + "controlCount": 53169, + "responseControlCount": 27160, + "explicitTransitionCount": 7586, + "sequentialAdjacencyCount": 8273, + "resolvedExplicitTransitionCount": 7586, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 21447, + "gridQuestionCount": 38, + "gridRowCount": 252, + "loopStartCount": 250, + "loopDefinitionCount": 10, + "loopExpandedQuestionCount": 5100, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "modules": [ + { + "module": "module1", + "counts": { + "authoredMarkerCount": 631, + "processorQuestionCount": 3996, + "processedQuestionCount": 3996, + "renderedFormCount": 3996, + "controlCount": 23386, + "responseControlCount": 11220, + "explicitTransitionCount": 3716, + "sequentialAdjacencyCount": 3994, + "resolvedExplicitTransitionCount": 3716, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 11698, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 100, + "loopDefinitionCount": 4, + "loopExpandedQuestionCount": 3500, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/module1.txt", + "authoredMarkerCount": 316, + "processorQuestionCount": 1998, + "gridQuestionCount": 0, + "loopDefinitionCount": 2, + "explicitTransitionCount": 1885, + "conditionSiteCount": 5903, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/module1Spanish.txt", + "authoredMarkerCount": 315, + "processorQuestionCount": 1998, + "gridQuestionCount": 0, + "loopDefinitionCount": 2, + "explicitTransitionCount": 1831, + "conditionSiteCount": 5795, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "module2", + "counts": { + "authoredMarkerCount": 719, + "processorQuestionCount": 1108, + "processedQuestionCount": 1108, + "renderedFormCount": 1108, + "controlCount": 6926, + "responseControlCount": 3200, + "explicitTransitionCount": 1150, + "sequentialAdjacencyCount": 1106, + "resolvedExplicitTransitionCount": 1150, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 2769, + "gridQuestionCount": 12, + "gridRowCount": 68, + "loopStartCount": 50, + "loopDefinitionCount": 2, + "loopExpandedQuestionCount": 450, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/module2.txt", + "authoredMarkerCount": 359, + "processorQuestionCount": 554, + "gridQuestionCount": 6, + "loopDefinitionCount": 1, + "explicitTransitionCount": 558, + "conditionSiteCount": 1367, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/module2Spanish.txt", + "authoredMarkerCount": 360, + "processorQuestionCount": 554, + "gridQuestionCount": 6, + "loopDefinitionCount": 1, + "explicitTransitionCount": 592, + "conditionSiteCount": 1402, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "module2024ConnectExperience", + "counts": { + "authoredMarkerCount": 86, + "processorQuestionCount": 86, + "processedQuestionCount": 86, + "renderedFormCount": 86, + "controlCount": 548, + "responseControlCount": 294, + "explicitTransitionCount": 32, + "sequentialAdjacencyCount": 84, + "resolvedExplicitTransitionCount": 32, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 56, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/module2024ConnectExperience.txt", + "authoredMarkerCount": 43, + "processorQuestionCount": 43, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 16, + "conditionSiteCount": 28, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/module2024ConnectExperienceSpanish.txt", + "authoredMarkerCount": 43, + "processorQuestionCount": 43, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 16, + "conditionSiteCount": 28, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "module2026ROIPreferences", + "counts": { + "authoredMarkerCount": 32, + "processorQuestionCount": 32, + "processedQuestionCount": 32, + "renderedFormCount": 32, + "controlCount": 235, + "responseControlCount": 158, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 30, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/module2026ROIPreferences.txt", + "authoredMarkerCount": 16, + "processorQuestionCount": 16, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 0, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/module2026ROIPreferencesSpanish.txt", + "authoredMarkerCount": 16, + "processorQuestionCount": 16, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 0, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "module3", + "counts": { + "authoredMarkerCount": 628, + "processorQuestionCount": 610, + "processedQuestionCount": 610, + "renderedFormCount": 610, + "controlCount": 4034, + "responseControlCount": 2094, + "explicitTransitionCount": 508, + "sequentialAdjacencyCount": 608, + "resolvedExplicitTransitionCount": 508, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1705, + "gridQuestionCount": 8, + "gridRowCount": 56, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/module3.txt", + "authoredMarkerCount": 314, + "processorQuestionCount": 305, + "gridQuestionCount": 4, + "loopDefinitionCount": 0, + "explicitTransitionCount": 254, + "conditionSiteCount": 853, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/module3Spanish.txt", + "authoredMarkerCount": 314, + "processorQuestionCount": 305, + "gridQuestionCount": 4, + "loopDefinitionCount": 0, + "explicitTransitionCount": 254, + "conditionSiteCount": 852, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "module4", + "counts": { + "authoredMarkerCount": 734, + "processorQuestionCount": 734, + "processedQuestionCount": 734, + "renderedFormCount": 734, + "controlCount": 5635, + "responseControlCount": 3354, + "explicitTransitionCount": 518, + "sequentialAdjacencyCount": 732, + "resolvedExplicitTransitionCount": 518, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 2696, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/module4.txt", + "authoredMarkerCount": 367, + "processorQuestionCount": 367, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 259, + "conditionSiteCount": 1349, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/module4Spanish.txt", + "authoredMarkerCount": 367, + "processorQuestionCount": 367, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 259, + "conditionSiteCount": 1347, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleBiospecimen", + "counts": { + "authoredMarkerCount": 105, + "processorQuestionCount": 101, + "processedQuestionCount": 101, + "renderedFormCount": 101, + "controlCount": 702, + "responseControlCount": 406, + "explicitTransitionCount": 50, + "sequentialAdjacencyCount": 99, + "resolvedExplicitTransitionCount": 50, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 54, + "gridQuestionCount": 2, + "gridRowCount": 6, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleBiospecimen.txt", + "authoredMarkerCount": 52, + "processorQuestionCount": 50, + "gridQuestionCount": 1, + "loopDefinitionCount": 0, + "explicitTransitionCount": 25, + "conditionSiteCount": 27, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleBiospecimenSpanish.txt", + "authoredMarkerCount": 53, + "processorQuestionCount": 51, + "gridQuestionCount": 1, + "loopDefinitionCount": 0, + "explicitTransitionCount": 25, + "conditionSiteCount": 27, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleCancerScreeningHistory", + "counts": { + "authoredMarkerCount": 288, + "processorQuestionCount": 288, + "processedQuestionCount": 288, + "renderedFormCount": 288, + "controlCount": 2316, + "responseControlCount": 1362, + "explicitTransitionCount": 474, + "sequentialAdjacencyCount": 286, + "resolvedExplicitTransitionCount": 474, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 213, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleCancerScreeningHistory.txt", + "authoredMarkerCount": 144, + "processorQuestionCount": 144, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 237, + "conditionSiteCount": 107, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleCancerScreeningHistorySpanish.txt", + "authoredMarkerCount": 144, + "processorQuestionCount": 144, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 237, + "conditionSiteCount": 106, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleClinicalBloodUrine", + "counts": { + "authoredMarkerCount": 42, + "processorQuestionCount": 38, + "processedQuestionCount": 38, + "renderedFormCount": 38, + "controlCount": 198, + "responseControlCount": 92, + "explicitTransitionCount": 10, + "sequentialAdjacencyCount": 36, + "resolvedExplicitTransitionCount": 10, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 20, + "gridQuestionCount": 2, + "gridRowCount": 6, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleClinicalBloodUrine.txt", + "authoredMarkerCount": 21, + "processorQuestionCount": 19, + "gridQuestionCount": 1, + "loopDefinitionCount": 0, + "explicitTransitionCount": 5, + "conditionSiteCount": 10, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleClinicalBloodUrineSpanish.txt", + "authoredMarkerCount": 21, + "processorQuestionCount": 19, + "gridQuestionCount": 1, + "loopDefinitionCount": 0, + "explicitTransitionCount": 5, + "conditionSiteCount": 10, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleCOVID19", + "counts": { + "authoredMarkerCount": 194, + "processorQuestionCount": 1200, + "processedQuestionCount": 1200, + "renderedFormCount": 1200, + "controlCount": 7844, + "responseControlCount": 3940, + "explicitTransitionCount": 1080, + "sequentialAdjacencyCount": 1198, + "resolvedExplicitTransitionCount": 1080, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 2194, + "gridQuestionCount": 14, + "gridRowCount": 116, + "loopStartCount": 100, + "loopDefinitionCount": 4, + "loopExpandedQuestionCount": 1150, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleCOVID19.txt", + "authoredMarkerCount": 97, + "processorQuestionCount": 600, + "gridQuestionCount": 7, + "loopDefinitionCount": 2, + "explicitTransitionCount": 540, + "conditionSiteCount": 1097, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleCOVID19Spanish.txt", + "authoredMarkerCount": 97, + "processorQuestionCount": 600, + "gridQuestionCount": 7, + "loopDefinitionCount": 2, + "explicitTransitionCount": 540, + "conditionSiteCount": 1097, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleDietScreener", + "counts": { + "authoredMarkerCount": 6, + "processorQuestionCount": 6, + "processedQuestionCount": 6, + "renderedFormCount": 6, + "controlCount": 326, + "responseControlCount": 314, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 4, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleDietScreener", + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 0, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleDietScreenerSpanish.txt", + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 0, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleMenstrual", + "counts": { + "authoredMarkerCount": 10, + "processorQuestionCount": 10, + "processedQuestionCount": 10, + "renderedFormCount": 10, + "controlCount": 28, + "responseControlCount": 6, + "explicitTransitionCount": 2, + "sequentialAdjacencyCount": 8, + "resolvedExplicitTransitionCount": 2, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 4, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleMenstrual.txt", + "authoredMarkerCount": 5, + "processorQuestionCount": 5, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 1, + "conditionSiteCount": 2, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleMenstrualSpanish.txt", + "authoredMarkerCount": 5, + "processorQuestionCount": 5, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 1, + "conditionSiteCount": 2, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleMouthwash", + "counts": { + "authoredMarkerCount": 68, + "processorQuestionCount": 68, + "processedQuestionCount": 68, + "renderedFormCount": 68, + "controlCount": 518, + "responseControlCount": 318, + "explicitTransitionCount": 44, + "sequentialAdjacencyCount": 66, + "resolvedExplicitTransitionCount": 44, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 38, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleMouthwash.txt", + "authoredMarkerCount": 34, + "processorQuestionCount": 34, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 22, + "conditionSiteCount": 19, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleMouthwashSpanish.txt", + "authoredMarkerCount": 34, + "processorQuestionCount": 34, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 22, + "conditionSiteCount": 19, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "moduleQoL", + "counts": { + "authoredMarkerCount": 22, + "processorQuestionCount": 22, + "processedQuestionCount": 22, + "renderedFormCount": 22, + "controlCount": 462, + "responseControlCount": 400, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 20, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/moduleQoL.txt", + "authoredMarkerCount": 11, + "processorQuestionCount": 11, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 0, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + }, + { + "locale": "es", + "path": "prod/moduleQoLSpanish.txt", + "authoredMarkerCount": 11, + "processorQuestionCount": 11, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 0, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + } + ] + }, + { + "module": "ssnModule", + "counts": { + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "processedQuestionCount": 3, + "renderedFormCount": 3, + "controlCount": 11, + "responseControlCount": 2, + "explicitTransitionCount": 2, + "sequentialAdjacencyCount": 2, + "resolvedExplicitTransitionCount": 2, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0 + }, + "surveys": [ + { + "locale": "en", + "path": "prod/ssnModule.txt", + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "gridQuestionCount": 0, + "loopDefinitionCount": 0, + "explicitTransitionCount": 2, + "conditionSiteCount": 0, + "unresolvedExplicitTransitionCount": 0 + } + ] + } + ], + "surveys": [ + { + "schemaVersion": 1, + "module": "module1", + "locale": "en", + "language": "en", + "path": "prod/module1.txt", + "sha256": "c36e2ceb44808d43538d04f43c336085ec73c05614ad5791fbb6e58582b8e107", + "questName": "D_726699695_V2", + "version": "4.0", + "authoredMarkerCount": 316, + "runtimeQuestionIds": [ + "INTROM1", + "INTROBAC", + "SECTION1", + "D_783167257?", + "RACEETHINTRO", + "D_384191091?", + "D_362270886?", + "D_525535977?", + "D_976808005?", + "D_308014437?", + "D_351657815?", + "D_115616118?", + "D_797626610?", + "D_588212264?", + "D_407056417?", + "D_750420077!", + "INTROMH", + "D_537153788?", + "D_508846529?", + "D_904550680?", + "D_167101091?", + "D_965917116?", + "D_929240175?", + "D_836712013?", + "D_836890480?", + "D_624479779?", + "D_337278854?", + "D_681229479?", + "D_660358706?", + "D_884793537?", + "D_460062034?", + "D_110652436?", + "D_894259747?", + "D_448722126?", + "D_201449164?", + "D_436333358?", + "D_180961306?", + "D_554782332?", + "D_409622468?", + "D_448476881?", + "D_459764934?", + "D_374697037?", + "D_580911251?", + "D_190347832?", + "D_624777141?", + "D_980403315?", + "D_936039586?", + "D_430472084?", + "D_900541533?", + "D_139655599?", + "D_494032093?", + "D_301679110?", + "D_810918716?", + "D_874046190?", + "D_989016875?", + "D_878094302?", + "D_543728565?", + "D_173101988?", + "D_245861186?", + "D_420423416?", + "INTROSTD", + "D_874709643?", + "D_915230886?", + "D_530548878?", + "D_469947273?", + "D_685735916?", + "D_954405492?", + "D_103397024?", + "D_931470797?", + "D_922524563?", + "D_978485677?", + "D_523188839?", + "D_725626004?", + "D_846786840?", + "D_423547108?", + "D_266847650?", + "D_852898339?", + "D_467061940?", + "D_619481697?", + "D_134642404?", + "D_219956652?", + "D_852236900?", + "DEPRESSINTRO", + "D_347860896?", + "D_301414575?", + "INTROSURG", + "D_624179836?", + "D_367884741?", + "D_178353079?", + "D_550075233?", + "D_927516732?", + "D_552788665?", + "D_439736294?", + "D_216506024?", + "D_860920332?", + "D_986613440?", + "D_517307064?", + "D_477690298?", + "D_176453768?", + "D_145786416?", + "D_287605131?", + "D_701157499?", + "D_428639167?", + "D_282355641?", + "D_539301647?", + "D_579225381?", + "D_891214661?", + "D_150352141?", + "D_122887481?", + "D_378892977?", + "D_534007917?", + "D_224791140?", + "D_752636038?", + "D_518750011?", + "D_946504570?", + "D_275770221?", + "D_107060069?", + "D_882152987?", + "D_527057404?", + "D_453252072?", + "D_795940097?", + "D_406011084?", + "D_593017220?", + "D_875208305?", + "D_323512813?", + "D_338924834?", + "D_952682839?", + "D_746012894?", + "D_114314839?", + "D_677262300?", + "D_650399623?", + "D_820324171?", + "D_724181652?", + "D_912857732?", + "D_808806810?", + "D_207025341?", + "D_803129396?", + "D_827393644?", + "D_183572295?", + "D_630675760?", + "D_837402132?", + "D_431628922?", + "D_848580651?", + "D_207494582?", + "D_936904328?", + "D_365851428?", + "D_206319592?", + "D_769668224?", + "D_814664694?", + "D_109544008?", + "D_186831207?", + "D_283634623?", + "D_164752169?", + "D_512167179?", + "D_509933065?", + "D_967093163?", + "FAMHISTINTRO", + "D_535621923?", + "D_992987417?", + "MOM", + "D_170440011?", + "D_354326265?", + "D_422714611?", + "D_276353712?", + "D_814510313?", + "D_259397450?", + "D_528753070?", + "D_683981980?", + "D_402548942?", + "D_247198016?", + "D_891925519?", + "D_317093647?", + "D_684692228?", + "D_671347092?", + "D_875221479?", + "D_186170949?", + "D_726451917?", + "D_213545903?", + "D_765903702?", + "D_773974223?", + "D_433604862?", + "D_521369040?", + "D_497311092?", + "D_625249910?", + "D_838564850?", + "D_633764113?", + "D_882263738?", + "D_671308090?", + "D_367374606?", + "D_178774803?", + "D_628078826?", + "D_659784914?", + "D_173240848?", + "D_345146692?", + "D_243443318?", + "D_610382315?", + "D_135519371?", + "D_785019074?", + "D_152885579?", + "D_692910565?", + "D_522464057?", + "D_808655074?", + "D_659627058?", + "D_370198527?", + "D_291855684?", + "D_413536735?", + "D_210325948?", + "D_193297280?", + "D_121502359?", + "D_489402657?", + "D_727260639?", + "D_359291056?", + "D_968841976?", + "D_864981804?", + "D_499434567?", + "SIB", + "D_694265648!", + "SIBCONFIRM", + "D_406098499_1_1?", + "D_579563781_1_1?", + "D_807431780_1_1?", + "D_589588769_1_1?", + "D_890637099_1_1?", + "D_869387390_1_1?", + "D_537137982_1_1?", + "D_607773106_1_1?", + "D_578895128_1_1?", + "D_384881609_1_1?", + "D_483975329_1_1?", + "D_570279754_1_1?", + "D_907590067_1_1?", + "D_860112841_1_1?", + "D_158354252_1_1?", + "D_654594205_1_1?", + "D_550722030_1_1?", + "D_142912472_1_1?", + "D_158409298_1_1?", + "D_529744595_1_1?", + "D_315987564_1_1?", + "D_852278004_1_1?", + "D_391972881_1_1?", + "D_259089008_1_1?", + "D_209771602_1_1?", + "D_682651189_1_1?", + "D_750994269_1_1?", + "D_700889863_1_1?", + "D_990114799_1_1?", + "D_195363361_1_1?", + "D_216840563_1_1?", + "D_514034680_1_1?", + "D_247160067_1_1?", + "D_312545873_1_1?", + "SIBSUM_1_1", + "D_406098499_2_2?", + "D_579563781_2_2?", + "D_807431780_2_2?", + "D_589588769_2_2?", + "D_890637099_2_2?", + "D_869387390_2_2?", + "D_537137982_2_2?", + "D_607773106_2_2?", + "D_578895128_2_2?", + "D_384881609_2_2?", + "D_483975329_2_2?", + "D_570279754_2_2?", + "D_907590067_2_2?", + "D_860112841_2_2?", + "D_158354252_2_2?", + "D_654594205_2_2?", + "D_550722030_2_2?", + "D_142912472_2_2?", + "D_158409298_2_2?", + "D_529744595_2_2?", + "D_315987564_2_2?", + "D_852278004_2_2?", + "D_391972881_2_2?", + "D_259089008_2_2?", + "D_209771602_2_2?", + "D_682651189_2_2?", + "D_750994269_2_2?", + "D_700889863_2_2?", + "D_990114799_2_2?", + "D_195363361_2_2?", + "D_216840563_2_2?", + "D_514034680_2_2?", + "D_247160067_2_2?", + "D_312545873_2_2?", + "SIBSUM_2_2", + "D_406098499_3_3?", + "D_579563781_3_3?", + "D_807431780_3_3?", + "D_589588769_3_3?", + "D_890637099_3_3?", + "D_869387390_3_3?", + "D_537137982_3_3?", + "D_607773106_3_3?", + "D_578895128_3_3?", + "D_384881609_3_3?", + "D_483975329_3_3?", + "D_570279754_3_3?", + "D_907590067_3_3?", + "D_860112841_3_3?", + "D_158354252_3_3?", + "D_654594205_3_3?", + "D_550722030_3_3?", + "D_142912472_3_3?", + "D_158409298_3_3?", + "D_529744595_3_3?", + "D_315987564_3_3?", + "D_852278004_3_3?", + "D_391972881_3_3?", + "D_259089008_3_3?", + "D_209771602_3_3?", + "D_682651189_3_3?", + "D_750994269_3_3?", + "D_700889863_3_3?", + "D_990114799_3_3?", + "D_195363361_3_3?", + "D_216840563_3_3?", + "D_514034680_3_3?", + "D_247160067_3_3?", + "D_312545873_3_3?", + "SIBSUM_3_3", + "D_406098499_4_4?", + "D_579563781_4_4?", + "D_807431780_4_4?", + "D_589588769_4_4?", + "D_890637099_4_4?", + "D_869387390_4_4?", + "D_537137982_4_4?", + "D_607773106_4_4?", + "D_578895128_4_4?", + "D_384881609_4_4?", + "D_483975329_4_4?", + "D_570279754_4_4?", + "D_907590067_4_4?", + "D_860112841_4_4?", + "D_158354252_4_4?", + "D_654594205_4_4?", + "D_550722030_4_4?", + "D_142912472_4_4?", + "D_158409298_4_4?", + "D_529744595_4_4?", + "D_315987564_4_4?", + "D_852278004_4_4?", + "D_391972881_4_4?", + "D_259089008_4_4?", + "D_209771602_4_4?", + "D_682651189_4_4?", + "D_750994269_4_4?", + "D_700889863_4_4?", + "D_990114799_4_4?", + "D_195363361_4_4?", + "D_216840563_4_4?", + "D_514034680_4_4?", + "D_247160067_4_4?", + "D_312545873_4_4?", + "SIBSUM_4_4", + "D_406098499_5_5?", + "D_579563781_5_5?", + "D_807431780_5_5?", + "D_589588769_5_5?", + "D_890637099_5_5?", + "D_869387390_5_5?", + "D_537137982_5_5?", + "D_607773106_5_5?", + "D_578895128_5_5?", + "D_384881609_5_5?", + "D_483975329_5_5?", + "D_570279754_5_5?", + "D_907590067_5_5?", + "D_860112841_5_5?", + "D_158354252_5_5?", + "D_654594205_5_5?", + "D_550722030_5_5?", + "D_142912472_5_5?", + "D_158409298_5_5?", + "D_529744595_5_5?", + "D_315987564_5_5?", + "D_852278004_5_5?", + "D_391972881_5_5?", + "D_259089008_5_5?", + "D_209771602_5_5?", + "D_682651189_5_5?", + "D_750994269_5_5?", + "D_700889863_5_5?", + "D_990114799_5_5?", + "D_195363361_5_5?", + "D_216840563_5_5?", + "D_514034680_5_5?", + "D_247160067_5_5?", + "D_312545873_5_5?", + "SIBSUM_5_5", + "D_406098499_6_6?", + "D_579563781_6_6?", + "D_807431780_6_6?", + "D_589588769_6_6?", + "D_890637099_6_6?", + "D_869387390_6_6?", + "D_537137982_6_6?", + "D_607773106_6_6?", + "D_578895128_6_6?", + "D_384881609_6_6?", + "D_483975329_6_6?", + "D_570279754_6_6?", + "D_907590067_6_6?", + "D_860112841_6_6?", + "D_158354252_6_6?", + "D_654594205_6_6?", + "D_550722030_6_6?", + "D_142912472_6_6?", + "D_158409298_6_6?", + "D_529744595_6_6?", + "D_315987564_6_6?", + "D_852278004_6_6?", + "D_391972881_6_6?", + "D_259089008_6_6?", + "D_209771602_6_6?", + "D_682651189_6_6?", + "D_750994269_6_6?", + "D_700889863_6_6?", + "D_990114799_6_6?", + "D_195363361_6_6?", + "D_216840563_6_6?", + "D_514034680_6_6?", + "D_247160067_6_6?", + "D_312545873_6_6?", + "SIBSUM_6_6", + "D_406098499_7_7?", + "D_579563781_7_7?", + "D_807431780_7_7?", + "D_589588769_7_7?", + "D_890637099_7_7?", + "D_869387390_7_7?", + "D_537137982_7_7?", + "D_607773106_7_7?", + "D_578895128_7_7?", + "D_384881609_7_7?", + "D_483975329_7_7?", + "D_570279754_7_7?", + "D_907590067_7_7?", + "D_860112841_7_7?", + "D_158354252_7_7?", + "D_654594205_7_7?", + "D_550722030_7_7?", + "D_142912472_7_7?", + "D_158409298_7_7?", + "D_529744595_7_7?", + "D_315987564_7_7?", + "D_852278004_7_7?", + "D_391972881_7_7?", + "D_259089008_7_7?", + "D_209771602_7_7?", + "D_682651189_7_7?", + "D_750994269_7_7?", + "D_700889863_7_7?", + "D_990114799_7_7?", + "D_195363361_7_7?", + "D_216840563_7_7?", + "D_514034680_7_7?", + "D_247160067_7_7?", + "D_312545873_7_7?", + "SIBSUM_7_7", + "D_406098499_8_8?", + "D_579563781_8_8?", + "D_807431780_8_8?", + "D_589588769_8_8?", + "D_890637099_8_8?", + "D_869387390_8_8?", + "D_537137982_8_8?", + "D_607773106_8_8?", + "D_578895128_8_8?", + "D_384881609_8_8?", + "D_483975329_8_8?", + "D_570279754_8_8?", + "D_907590067_8_8?", + "D_860112841_8_8?", + "D_158354252_8_8?", + "D_654594205_8_8?", + "D_550722030_8_8?", + "D_142912472_8_8?", + "D_158409298_8_8?", + "D_529744595_8_8?", + "D_315987564_8_8?", + "D_852278004_8_8?", + "D_391972881_8_8?", + "D_259089008_8_8?", + "D_209771602_8_8?", + "D_682651189_8_8?", + "D_750994269_8_8?", + "D_700889863_8_8?", + "D_990114799_8_8?", + "D_195363361_8_8?", + "D_216840563_8_8?", + "D_514034680_8_8?", + "D_247160067_8_8?", + "D_312545873_8_8?", + "SIBSUM_8_8", + "D_406098499_9_9?", + "D_579563781_9_9?", + "D_807431780_9_9?", + "D_589588769_9_9?", + "D_890637099_9_9?", + "D_869387390_9_9?", + "D_537137982_9_9?", + "D_607773106_9_9?", + "D_578895128_9_9?", + "D_384881609_9_9?", + "D_483975329_9_9?", + "D_570279754_9_9?", + "D_907590067_9_9?", + "D_860112841_9_9?", + "D_158354252_9_9?", + "D_654594205_9_9?", + "D_550722030_9_9?", + "D_142912472_9_9?", + "D_158409298_9_9?", + "D_529744595_9_9?", + "D_315987564_9_9?", + "D_852278004_9_9?", + "D_391972881_9_9?", + "D_259089008_9_9?", + "D_209771602_9_9?", + "D_682651189_9_9?", + "D_750994269_9_9?", + "D_700889863_9_9?", + "D_990114799_9_9?", + "D_195363361_9_9?", + "D_216840563_9_9?", + "D_514034680_9_9?", + "D_247160067_9_9?", + "D_312545873_9_9?", + "SIBSUM_9_9", + "D_406098499_10_10?", + "D_579563781_10_10?", + "D_807431780_10_10?", + "D_589588769_10_10?", + "D_890637099_10_10?", + "D_869387390_10_10?", + "D_537137982_10_10?", + "D_607773106_10_10?", + "D_578895128_10_10?", + "D_384881609_10_10?", + "D_483975329_10_10?", + "D_570279754_10_10?", + "D_907590067_10_10?", + "D_860112841_10_10?", + "D_158354252_10_10?", + "D_654594205_10_10?", + "D_550722030_10_10?", + "D_142912472_10_10?", + "D_158409298_10_10?", + "D_529744595_10_10?", + "D_315987564_10_10?", + "D_852278004_10_10?", + "D_391972881_10_10?", + "D_259089008_10_10?", + "D_209771602_10_10?", + "D_682651189_10_10?", + "D_750994269_10_10?", + "D_700889863_10_10?", + "D_990114799_10_10?", + "D_195363361_10_10?", + "D_216840563_10_10?", + "D_514034680_10_10?", + "D_247160067_10_10?", + "D_312545873_10_10?", + "SIBSUM_10_10", + "D_406098499_11_11?", + "D_579563781_11_11?", + "D_807431780_11_11?", + "D_589588769_11_11?", + "D_890637099_11_11?", + "D_869387390_11_11?", + "D_537137982_11_11?", + "D_607773106_11_11?", + "D_578895128_11_11?", + "D_384881609_11_11?", + "D_483975329_11_11?", + "D_570279754_11_11?", + "D_907590067_11_11?", + "D_860112841_11_11?", + "D_158354252_11_11?", + "D_654594205_11_11?", + "D_550722030_11_11?", + "D_142912472_11_11?", + "D_158409298_11_11?", + "D_529744595_11_11?", + "D_315987564_11_11?", + "D_852278004_11_11?", + "D_391972881_11_11?", + "D_259089008_11_11?", + "D_209771602_11_11?", + "D_682651189_11_11?", + "D_750994269_11_11?", + "D_700889863_11_11?", + "D_990114799_11_11?", + "D_195363361_11_11?", + "D_216840563_11_11?", + "D_514034680_11_11?", + "D_247160067_11_11?", + "D_312545873_11_11?", + "SIBSUM_11_11", + "D_406098499_12_12?", + "D_579563781_12_12?", + "D_807431780_12_12?", + "D_589588769_12_12?", + "D_890637099_12_12?", + "D_869387390_12_12?", + "D_537137982_12_12?", + "D_607773106_12_12?", + "D_578895128_12_12?", + "D_384881609_12_12?", + "D_483975329_12_12?", + "D_570279754_12_12?", + "D_907590067_12_12?", + "D_860112841_12_12?", + "D_158354252_12_12?", + "D_654594205_12_12?", + "D_550722030_12_12?", + "D_142912472_12_12?", + "D_158409298_12_12?", + "D_529744595_12_12?", + "D_315987564_12_12?", + "D_852278004_12_12?", + "D_391972881_12_12?", + "D_259089008_12_12?", + "D_209771602_12_12?", + "D_682651189_12_12?", + "D_750994269_12_12?", + "D_700889863_12_12?", + "D_990114799_12_12?", + "D_195363361_12_12?", + "D_216840563_12_12?", + "D_514034680_12_12?", + "D_247160067_12_12?", + "D_312545873_12_12?", + "SIBSUM_12_12", + "D_406098499_13_13?", + "D_579563781_13_13?", + "D_807431780_13_13?", + "D_589588769_13_13?", + "D_890637099_13_13?", + "D_869387390_13_13?", + "D_537137982_13_13?", + "D_607773106_13_13?", + "D_578895128_13_13?", + "D_384881609_13_13?", + "D_483975329_13_13?", + "D_570279754_13_13?", + "D_907590067_13_13?", + "D_860112841_13_13?", + "D_158354252_13_13?", + "D_654594205_13_13?", + "D_550722030_13_13?", + "D_142912472_13_13?", + "D_158409298_13_13?", + "D_529744595_13_13?", + "D_315987564_13_13?", + "D_852278004_13_13?", + "D_391972881_13_13?", + "D_259089008_13_13?", + "D_209771602_13_13?", + "D_682651189_13_13?", + "D_750994269_13_13?", + "D_700889863_13_13?", + "D_990114799_13_13?", + "D_195363361_13_13?", + "D_216840563_13_13?", + "D_514034680_13_13?", + "D_247160067_13_13?", + "D_312545873_13_13?", + "SIBSUM_13_13", + "D_406098499_14_14?", + "D_579563781_14_14?", + "D_807431780_14_14?", + "D_589588769_14_14?", + "D_890637099_14_14?", + "D_869387390_14_14?", + "D_537137982_14_14?", + "D_607773106_14_14?", + "D_578895128_14_14?", + "D_384881609_14_14?", + "D_483975329_14_14?", + "D_570279754_14_14?", + "D_907590067_14_14?", + "D_860112841_14_14?", + "D_158354252_14_14?", + "D_654594205_14_14?", + "D_550722030_14_14?", + "D_142912472_14_14?", + "D_158409298_14_14?", + "D_529744595_14_14?", + "D_315987564_14_14?", + "D_852278004_14_14?", + "D_391972881_14_14?", + "D_259089008_14_14?", + "D_209771602_14_14?", + "D_682651189_14_14?", + "D_750994269_14_14?", + "D_700889863_14_14?", + "D_990114799_14_14?", + "D_195363361_14_14?", + "D_216840563_14_14?", + "D_514034680_14_14?", + "D_247160067_14_14?", + "D_312545873_14_14?", + "SIBSUM_14_14", + "D_406098499_15_15?", + "D_579563781_15_15?", + "D_807431780_15_15?", + "D_589588769_15_15?", + "D_890637099_15_15?", + "D_869387390_15_15?", + "D_537137982_15_15?", + "D_607773106_15_15?", + "D_578895128_15_15?", + "D_384881609_15_15?", + "D_483975329_15_15?", + "D_570279754_15_15?", + "D_907590067_15_15?", + "D_860112841_15_15?", + "D_158354252_15_15?", + "D_654594205_15_15?", + "D_550722030_15_15?", + "D_142912472_15_15?", + "D_158409298_15_15?", + "D_529744595_15_15?", + "D_315987564_15_15?", + "D_852278004_15_15?", + "D_391972881_15_15?", + "D_259089008_15_15?", + "D_209771602_15_15?", + "D_682651189_15_15?", + "D_750994269_15_15?", + "D_700889863_15_15?", + "D_990114799_15_15?", + "D_195363361_15_15?", + "D_216840563_15_15?", + "D_514034680_15_15?", + "D_247160067_15_15?", + "D_312545873_15_15?", + "SIBSUM_15_15", + "D_406098499_16_16?", + "D_579563781_16_16?", + "D_807431780_16_16?", + "D_589588769_16_16?", + "D_890637099_16_16?", + "D_869387390_16_16?", + "D_537137982_16_16?", + "D_607773106_16_16?", + "D_578895128_16_16?", + "D_384881609_16_16?", + "D_483975329_16_16?", + "D_570279754_16_16?", + "D_907590067_16_16?", + "D_860112841_16_16?", + "D_158354252_16_16?", + "D_654594205_16_16?", + "D_550722030_16_16?", + "D_142912472_16_16?", + "D_158409298_16_16?", + "D_529744595_16_16?", + "D_315987564_16_16?", + "D_852278004_16_16?", + "D_391972881_16_16?", + "D_259089008_16_16?", + "D_209771602_16_16?", + "D_682651189_16_16?", + "D_750994269_16_16?", + "D_700889863_16_16?", + "D_990114799_16_16?", + "D_195363361_16_16?", + "D_216840563_16_16?", + "D_514034680_16_16?", + "D_247160067_16_16?", + "D_312545873_16_16?", + "SIBSUM_16_16", + "D_406098499_17_17?", + "D_579563781_17_17?", + "D_807431780_17_17?", + "D_589588769_17_17?", + "D_890637099_17_17?", + "D_869387390_17_17?", + "D_537137982_17_17?", + "D_607773106_17_17?", + "D_578895128_17_17?", + "D_384881609_17_17?", + "D_483975329_17_17?", + "D_570279754_17_17?", + "D_907590067_17_17?", + "D_860112841_17_17?", + "D_158354252_17_17?", + "D_654594205_17_17?", + "D_550722030_17_17?", + "D_142912472_17_17?", + "D_158409298_17_17?", + "D_529744595_17_17?", + "D_315987564_17_17?", + "D_852278004_17_17?", + "D_391972881_17_17?", + "D_259089008_17_17?", + "D_209771602_17_17?", + "D_682651189_17_17?", + "D_750994269_17_17?", + "D_700889863_17_17?", + "D_990114799_17_17?", + "D_195363361_17_17?", + "D_216840563_17_17?", + "D_514034680_17_17?", + "D_247160067_17_17?", + "D_312545873_17_17?", + "SIBSUM_17_17", + "D_406098499_18_18?", + "D_579563781_18_18?", + "D_807431780_18_18?", + "D_589588769_18_18?", + "D_890637099_18_18?", + "D_869387390_18_18?", + "D_537137982_18_18?", + "D_607773106_18_18?", + "D_578895128_18_18?", + "D_384881609_18_18?", + "D_483975329_18_18?", + "D_570279754_18_18?", + "D_907590067_18_18?", + "D_860112841_18_18?", + "D_158354252_18_18?", + "D_654594205_18_18?", + "D_550722030_18_18?", + "D_142912472_18_18?", + "D_158409298_18_18?", + "D_529744595_18_18?", + "D_315987564_18_18?", + "D_852278004_18_18?", + "D_391972881_18_18?", + "D_259089008_18_18?", + "D_209771602_18_18?", + "D_682651189_18_18?", + "D_750994269_18_18?", + "D_700889863_18_18?", + "D_990114799_18_18?", + "D_195363361_18_18?", + "D_216840563_18_18?", + "D_514034680_18_18?", + "D_247160067_18_18?", + "D_312545873_18_18?", + "SIBSUM_18_18", + "D_406098499_19_19?", + "D_579563781_19_19?", + "D_807431780_19_19?", + "D_589588769_19_19?", + "D_890637099_19_19?", + "D_869387390_19_19?", + "D_537137982_19_19?", + "D_607773106_19_19?", + "D_578895128_19_19?", + "D_384881609_19_19?", + "D_483975329_19_19?", + "D_570279754_19_19?", + "D_907590067_19_19?", + "D_860112841_19_19?", + "D_158354252_19_19?", + "D_654594205_19_19?", + "D_550722030_19_19?", + "D_142912472_19_19?", + "D_158409298_19_19?", + "D_529744595_19_19?", + "D_315987564_19_19?", + "D_852278004_19_19?", + "D_391972881_19_19?", + "D_259089008_19_19?", + "D_209771602_19_19?", + "D_682651189_19_19?", + "D_750994269_19_19?", + "D_700889863_19_19?", + "D_990114799_19_19?", + "D_195363361_19_19?", + "D_216840563_19_19?", + "D_514034680_19_19?", + "D_247160067_19_19?", + "D_312545873_19_19?", + "SIBSUM_19_19", + "D_406098499_20_20?", + "D_579563781_20_20?", + "D_807431780_20_20?", + "D_589588769_20_20?", + "D_890637099_20_20?", + "D_869387390_20_20?", + "D_537137982_20_20?", + "D_607773106_20_20?", + "D_578895128_20_20?", + "D_384881609_20_20?", + "D_483975329_20_20?", + "D_570279754_20_20?", + "D_907590067_20_20?", + "D_860112841_20_20?", + "D_158354252_20_20?", + "D_654594205_20_20?", + "D_550722030_20_20?", + "D_142912472_20_20?", + "D_158409298_20_20?", + "D_529744595_20_20?", + "D_315987564_20_20?", + "D_852278004_20_20?", + "D_391972881_20_20?", + "D_259089008_20_20?", + "D_209771602_20_20?", + "D_682651189_20_20?", + "D_750994269_20_20?", + "D_700889863_20_20?", + "D_990114799_20_20?", + "D_195363361_20_20?", + "D_216840563_20_20?", + "D_514034680_20_20?", + "D_247160067_20_20?", + "D_312545873_20_20?", + "SIBSUM_20_20", + "D_406098499_21_21?", + "D_579563781_21_21?", + "D_807431780_21_21?", + "D_589588769_21_21?", + "D_890637099_21_21?", + "D_869387390_21_21?", + "D_537137982_21_21?", + "D_607773106_21_21?", + "D_578895128_21_21?", + "D_384881609_21_21?", + "D_483975329_21_21?", + "D_570279754_21_21?", + "D_907590067_21_21?", + "D_860112841_21_21?", + "D_158354252_21_21?", + "D_654594205_21_21?", + "D_550722030_21_21?", + "D_142912472_21_21?", + "D_158409298_21_21?", + "D_529744595_21_21?", + "D_315987564_21_21?", + "D_852278004_21_21?", + "D_391972881_21_21?", + "D_259089008_21_21?", + "D_209771602_21_21?", + "D_682651189_21_21?", + "D_750994269_21_21?", + "D_700889863_21_21?", + "D_990114799_21_21?", + "D_195363361_21_21?", + "D_216840563_21_21?", + "D_514034680_21_21?", + "D_247160067_21_21?", + "D_312545873_21_21?", + "SIBSUM_21_21", + "D_406098499_22_22?", + "D_579563781_22_22?", + "D_807431780_22_22?", + "D_589588769_22_22?", + "D_890637099_22_22?", + "D_869387390_22_22?", + "D_537137982_22_22?", + "D_607773106_22_22?", + "D_578895128_22_22?", + "D_384881609_22_22?", + "D_483975329_22_22?", + "D_570279754_22_22?", + "D_907590067_22_22?", + "D_860112841_22_22?", + "D_158354252_22_22?", + "D_654594205_22_22?", + "D_550722030_22_22?", + "D_142912472_22_22?", + "D_158409298_22_22?", + "D_529744595_22_22?", + "D_315987564_22_22?", + "D_852278004_22_22?", + "D_391972881_22_22?", + "D_259089008_22_22?", + "D_209771602_22_22?", + "D_682651189_22_22?", + "D_750994269_22_22?", + "D_700889863_22_22?", + "D_990114799_22_22?", + "D_195363361_22_22?", + "D_216840563_22_22?", + "D_514034680_22_22?", + "D_247160067_22_22?", + "D_312545873_22_22?", + "SIBSUM_22_22", + "D_406098499_23_23?", + "D_579563781_23_23?", + "D_807431780_23_23?", + "D_589588769_23_23?", + "D_890637099_23_23?", + "D_869387390_23_23?", + "D_537137982_23_23?", + "D_607773106_23_23?", + "D_578895128_23_23?", + "D_384881609_23_23?", + "D_483975329_23_23?", + "D_570279754_23_23?", + "D_907590067_23_23?", + "D_860112841_23_23?", + "D_158354252_23_23?", + "D_654594205_23_23?", + "D_550722030_23_23?", + "D_142912472_23_23?", + "D_158409298_23_23?", + "D_529744595_23_23?", + "D_315987564_23_23?", + "D_852278004_23_23?", + "D_391972881_23_23?", + "D_259089008_23_23?", + "D_209771602_23_23?", + "D_682651189_23_23?", + "D_750994269_23_23?", + "D_700889863_23_23?", + "D_990114799_23_23?", + "D_195363361_23_23?", + "D_216840563_23_23?", + "D_514034680_23_23?", + "D_247160067_23_23?", + "D_312545873_23_23?", + "SIBSUM_23_23", + "D_406098499_24_24?", + "D_579563781_24_24?", + "D_807431780_24_24?", + "D_589588769_24_24?", + "D_890637099_24_24?", + "D_869387390_24_24?", + "D_537137982_24_24?", + "D_607773106_24_24?", + "D_578895128_24_24?", + "D_384881609_24_24?", + "D_483975329_24_24?", + "D_570279754_24_24?", + "D_907590067_24_24?", + "D_860112841_24_24?", + "D_158354252_24_24?", + "D_654594205_24_24?", + "D_550722030_24_24?", + "D_142912472_24_24?", + "D_158409298_24_24?", + "D_529744595_24_24?", + "D_315987564_24_24?", + "D_852278004_24_24?", + "D_391972881_24_24?", + "D_259089008_24_24?", + "D_209771602_24_24?", + "D_682651189_24_24?", + "D_750994269_24_24?", + "D_700889863_24_24?", + "D_990114799_24_24?", + "D_195363361_24_24?", + "D_216840563_24_24?", + "D_514034680_24_24?", + "D_247160067_24_24?", + "D_312545873_24_24?", + "SIBSUM_24_24", + "D_406098499_25_25?", + "D_579563781_25_25?", + "D_807431780_25_25?", + "D_589588769_25_25?", + "D_890637099_25_25?", + "D_869387390_25_25?", + "D_537137982_25_25?", + "D_607773106_25_25?", + "D_578895128_25_25?", + "D_384881609_25_25?", + "D_483975329_25_25?", + "D_570279754_25_25?", + "D_907590067_25_25?", + "D_860112841_25_25?", + "D_158354252_25_25?", + "D_654594205_25_25?", + "D_550722030_25_25?", + "D_142912472_25_25?", + "D_158409298_25_25?", + "D_529744595_25_25?", + "D_315987564_25_25?", + "D_852278004_25_25?", + "D_391972881_25_25?", + "D_259089008_25_25?", + "D_209771602_25_25?", + "D_682651189_25_25?", + "D_750994269_25_25?", + "D_700889863_25_25?", + "D_990114799_25_25?", + "D_195363361_25_25?", + "D_216840563_25_25?", + "D_514034680_25_25?", + "D_247160067_25_25?", + "D_312545873_25_25?", + "SIBSUM_25_25", + "END_OF_LOOP", + "CHILD", + "D_446999144!", + "CHILDCONFIRM", + "D_714001034_1_1?", + "D_887697329_1_1?", + "D_473529484_1_1?", + "D_873968217_1_1?", + "D_418392907_1_1?", + "D_640010727_1_1?", + "D_236590500_1_1?", + "D_718867914_1_1?", + "D_812370563_1_1?", + "D_900939817_1_1?", + "D_938150507_1_1?", + "D_601211723_1_1?", + "D_861788020_1_1?", + "D_204425387_1_1?", + "D_558929585_1_1?", + "D_233764880_1_1?", + "D_905145893_1_1?", + "D_473190270_1_1?", + "D_483735587_1_1?", + "D_331759900_1_1?", + "D_513077276_1_1?", + "D_519974530_1_1?", + "D_907776050_1_1?", + "D_271684775_1_1?", + "D_252160589_1_1?", + "D_774774759_1_1?", + "D_127257956_1_1?", + "D_496917282_1_1?", + "D_908129316_1_1?", + "D_795003496_1_1?", + "D_969177591_1_1?", + "D_116065851_1_1?", + "D_278159347_1_1?", + "D_845219872_1_1?", + "CHILDSUM_1_1", + "D_714001034_2_2?", + "D_887697329_2_2?", + "D_473529484_2_2?", + "D_873968217_2_2?", + "D_418392907_2_2?", + "D_640010727_2_2?", + "D_236590500_2_2?", + "D_718867914_2_2?", + "D_812370563_2_2?", + "D_900939817_2_2?", + "D_938150507_2_2?", + "D_601211723_2_2?", + "D_861788020_2_2?", + "D_204425387_2_2?", + "D_558929585_2_2?", + "D_233764880_2_2?", + "D_905145893_2_2?", + "D_473190270_2_2?", + "D_483735587_2_2?", + "D_331759900_2_2?", + "D_513077276_2_2?", + "D_519974530_2_2?", + "D_907776050_2_2?", + "D_271684775_2_2?", + "D_252160589_2_2?", + "D_774774759_2_2?", + "D_127257956_2_2?", + "D_496917282_2_2?", + "D_908129316_2_2?", + "D_795003496_2_2?", + "D_969177591_2_2?", + "D_116065851_2_2?", + "D_278159347_2_2?", + "D_845219872_2_2?", + "CHILDSUM_2_2", + "D_714001034_3_3?", + "D_887697329_3_3?", + "D_473529484_3_3?", + "D_873968217_3_3?", + "D_418392907_3_3?", + "D_640010727_3_3?", + "D_236590500_3_3?", + "D_718867914_3_3?", + "D_812370563_3_3?", + "D_900939817_3_3?", + "D_938150507_3_3?", + "D_601211723_3_3?", + "D_861788020_3_3?", + "D_204425387_3_3?", + "D_558929585_3_3?", + "D_233764880_3_3?", + "D_905145893_3_3?", + "D_473190270_3_3?", + "D_483735587_3_3?", + "D_331759900_3_3?", + "D_513077276_3_3?", + "D_519974530_3_3?", + "D_907776050_3_3?", + "D_271684775_3_3?", + "D_252160589_3_3?", + "D_774774759_3_3?", + "D_127257956_3_3?", + "D_496917282_3_3?", + "D_908129316_3_3?", + "D_795003496_3_3?", + "D_969177591_3_3?", + "D_116065851_3_3?", + "D_278159347_3_3?", + "D_845219872_3_3?", + "CHILDSUM_3_3", + "D_714001034_4_4?", + "D_887697329_4_4?", + "D_473529484_4_4?", + "D_873968217_4_4?", + "D_418392907_4_4?", + "D_640010727_4_4?", + "D_236590500_4_4?", + "D_718867914_4_4?", + "D_812370563_4_4?", + "D_900939817_4_4?", + "D_938150507_4_4?", + "D_601211723_4_4?", + "D_861788020_4_4?", + "D_204425387_4_4?", + "D_558929585_4_4?", + "D_233764880_4_4?", + "D_905145893_4_4?", + "D_473190270_4_4?", + "D_483735587_4_4?", + "D_331759900_4_4?", + "D_513077276_4_4?", + "D_519974530_4_4?", + "D_907776050_4_4?", + "D_271684775_4_4?", + "D_252160589_4_4?", + "D_774774759_4_4?", + "D_127257956_4_4?", + "D_496917282_4_4?", + "D_908129316_4_4?", + "D_795003496_4_4?", + "D_969177591_4_4?", + "D_116065851_4_4?", + "D_278159347_4_4?", + "D_845219872_4_4?", + "CHILDSUM_4_4", + "D_714001034_5_5?", + "D_887697329_5_5?", + "D_473529484_5_5?", + "D_873968217_5_5?", + "D_418392907_5_5?", + "D_640010727_5_5?", + "D_236590500_5_5?", + "D_718867914_5_5?", + "D_812370563_5_5?", + "D_900939817_5_5?", + "D_938150507_5_5?", + "D_601211723_5_5?", + "D_861788020_5_5?", + "D_204425387_5_5?", + "D_558929585_5_5?", + "D_233764880_5_5?", + "D_905145893_5_5?", + "D_473190270_5_5?", + "D_483735587_5_5?", + "D_331759900_5_5?", + "D_513077276_5_5?", + "D_519974530_5_5?", + "D_907776050_5_5?", + "D_271684775_5_5?", + "D_252160589_5_5?", + "D_774774759_5_5?", + "D_127257956_5_5?", + "D_496917282_5_5?", + "D_908129316_5_5?", + "D_795003496_5_5?", + "D_969177591_5_5?", + "D_116065851_5_5?", + "D_278159347_5_5?", + "D_845219872_5_5?", + "CHILDSUM_5_5", + "D_714001034_6_6?", + "D_887697329_6_6?", + "D_473529484_6_6?", + "D_873968217_6_6?", + "D_418392907_6_6?", + "D_640010727_6_6?", + "D_236590500_6_6?", + "D_718867914_6_6?", + "D_812370563_6_6?", + "D_900939817_6_6?", + "D_938150507_6_6?", + "D_601211723_6_6?", + "D_861788020_6_6?", + "D_204425387_6_6?", + "D_558929585_6_6?", + "D_233764880_6_6?", + "D_905145893_6_6?", + "D_473190270_6_6?", + "D_483735587_6_6?", + "D_331759900_6_6?", + "D_513077276_6_6?", + "D_519974530_6_6?", + "D_907776050_6_6?", + "D_271684775_6_6?", + "D_252160589_6_6?", + "D_774774759_6_6?", + "D_127257956_6_6?", + "D_496917282_6_6?", + "D_908129316_6_6?", + "D_795003496_6_6?", + "D_969177591_6_6?", + "D_116065851_6_6?", + "D_278159347_6_6?", + "D_845219872_6_6?", + "CHILDSUM_6_6", + "D_714001034_7_7?", + "D_887697329_7_7?", + "D_473529484_7_7?", + "D_873968217_7_7?", + "D_418392907_7_7?", + "D_640010727_7_7?", + "D_236590500_7_7?", + "D_718867914_7_7?", + "D_812370563_7_7?", + "D_900939817_7_7?", + "D_938150507_7_7?", + "D_601211723_7_7?", + "D_861788020_7_7?", + "D_204425387_7_7?", + "D_558929585_7_7?", + "D_233764880_7_7?", + "D_905145893_7_7?", + "D_473190270_7_7?", + "D_483735587_7_7?", + "D_331759900_7_7?", + "D_513077276_7_7?", + "D_519974530_7_7?", + "D_907776050_7_7?", + "D_271684775_7_7?", + "D_252160589_7_7?", + "D_774774759_7_7?", + "D_127257956_7_7?", + "D_496917282_7_7?", + "D_908129316_7_7?", + "D_795003496_7_7?", + "D_969177591_7_7?", + "D_116065851_7_7?", + "D_278159347_7_7?", + "D_845219872_7_7?", + "CHILDSUM_7_7", + "D_714001034_8_8?", + "D_887697329_8_8?", + "D_473529484_8_8?", + "D_873968217_8_8?", + "D_418392907_8_8?", + "D_640010727_8_8?", + "D_236590500_8_8?", + "D_718867914_8_8?", + "D_812370563_8_8?", + "D_900939817_8_8?", + "D_938150507_8_8?", + "D_601211723_8_8?", + "D_861788020_8_8?", + "D_204425387_8_8?", + "D_558929585_8_8?", + "D_233764880_8_8?", + "D_905145893_8_8?", + "D_473190270_8_8?", + "D_483735587_8_8?", + "D_331759900_8_8?", + "D_513077276_8_8?", + "D_519974530_8_8?", + "D_907776050_8_8?", + "D_271684775_8_8?", + "D_252160589_8_8?", + "D_774774759_8_8?", + "D_127257956_8_8?", + "D_496917282_8_8?", + "D_908129316_8_8?", + "D_795003496_8_8?", + "D_969177591_8_8?", + "D_116065851_8_8?", + "D_278159347_8_8?", + "D_845219872_8_8?", + "CHILDSUM_8_8", + "D_714001034_9_9?", + "D_887697329_9_9?", + "D_473529484_9_9?", + "D_873968217_9_9?", + "D_418392907_9_9?", + "D_640010727_9_9?", + "D_236590500_9_9?", + "D_718867914_9_9?", + "D_812370563_9_9?", + "D_900939817_9_9?", + "D_938150507_9_9?", + "D_601211723_9_9?", + "D_861788020_9_9?", + "D_204425387_9_9?", + "D_558929585_9_9?", + "D_233764880_9_9?", + "D_905145893_9_9?", + "D_473190270_9_9?", + "D_483735587_9_9?", + "D_331759900_9_9?", + "D_513077276_9_9?", + "D_519974530_9_9?", + "D_907776050_9_9?", + "D_271684775_9_9?", + "D_252160589_9_9?", + "D_774774759_9_9?", + "D_127257956_9_9?", + "D_496917282_9_9?", + "D_908129316_9_9?", + "D_795003496_9_9?", + "D_969177591_9_9?", + "D_116065851_9_9?", + "D_278159347_9_9?", + "D_845219872_9_9?", + "CHILDSUM_9_9", + "D_714001034_10_10?", + "D_887697329_10_10?", + "D_473529484_10_10?", + "D_873968217_10_10?", + "D_418392907_10_10?", + "D_640010727_10_10?", + "D_236590500_10_10?", + "D_718867914_10_10?", + "D_812370563_10_10?", + "D_900939817_10_10?", + "D_938150507_10_10?", + "D_601211723_10_10?", + "D_861788020_10_10?", + "D_204425387_10_10?", + "D_558929585_10_10?", + "D_233764880_10_10?", + "D_905145893_10_10?", + "D_473190270_10_10?", + "D_483735587_10_10?", + "D_331759900_10_10?", + "D_513077276_10_10?", + "D_519974530_10_10?", + "D_907776050_10_10?", + "D_271684775_10_10?", + "D_252160589_10_10?", + "D_774774759_10_10?", + "D_127257956_10_10?", + "D_496917282_10_10?", + "D_908129316_10_10?", + "D_795003496_10_10?", + "D_969177591_10_10?", + "D_116065851_10_10?", + "D_278159347_10_10?", + "D_845219872_10_10?", + "CHILDSUM_10_10", + "D_714001034_11_11?", + "D_887697329_11_11?", + "D_473529484_11_11?", + "D_873968217_11_11?", + "D_418392907_11_11?", + "D_640010727_11_11?", + "D_236590500_11_11?", + "D_718867914_11_11?", + "D_812370563_11_11?", + "D_900939817_11_11?", + "D_938150507_11_11?", + "D_601211723_11_11?", + "D_861788020_11_11?", + "D_204425387_11_11?", + "D_558929585_11_11?", + "D_233764880_11_11?", + "D_905145893_11_11?", + "D_473190270_11_11?", + "D_483735587_11_11?", + "D_331759900_11_11?", + "D_513077276_11_11?", + "D_519974530_11_11?", + "D_907776050_11_11?", + "D_271684775_11_11?", + "D_252160589_11_11?", + "D_774774759_11_11?", + "D_127257956_11_11?", + "D_496917282_11_11?", + "D_908129316_11_11?", + "D_795003496_11_11?", + "D_969177591_11_11?", + "D_116065851_11_11?", + "D_278159347_11_11?", + "D_845219872_11_11?", + "CHILDSUM_11_11", + "D_714001034_12_12?", + "D_887697329_12_12?", + "D_473529484_12_12?", + "D_873968217_12_12?", + "D_418392907_12_12?", + "D_640010727_12_12?", + "D_236590500_12_12?", + "D_718867914_12_12?", + "D_812370563_12_12?", + "D_900939817_12_12?", + "D_938150507_12_12?", + "D_601211723_12_12?", + "D_861788020_12_12?", + "D_204425387_12_12?", + "D_558929585_12_12?", + "D_233764880_12_12?", + "D_905145893_12_12?", + "D_473190270_12_12?", + "D_483735587_12_12?", + "D_331759900_12_12?", + "D_513077276_12_12?", + "D_519974530_12_12?", + "D_907776050_12_12?", + "D_271684775_12_12?", + "D_252160589_12_12?", + "D_774774759_12_12?", + "D_127257956_12_12?", + "D_496917282_12_12?", + "D_908129316_12_12?", + "D_795003496_12_12?", + "D_969177591_12_12?", + "D_116065851_12_12?", + "D_278159347_12_12?", + "D_845219872_12_12?", + "CHILDSUM_12_12", + "D_714001034_13_13?", + "D_887697329_13_13?", + "D_473529484_13_13?", + "D_873968217_13_13?", + "D_418392907_13_13?", + "D_640010727_13_13?", + "D_236590500_13_13?", + "D_718867914_13_13?", + "D_812370563_13_13?", + "D_900939817_13_13?", + "D_938150507_13_13?", + "D_601211723_13_13?", + "D_861788020_13_13?", + "D_204425387_13_13?", + "D_558929585_13_13?", + "D_233764880_13_13?", + "D_905145893_13_13?", + "D_473190270_13_13?", + "D_483735587_13_13?", + "D_331759900_13_13?", + "D_513077276_13_13?", + "D_519974530_13_13?", + "D_907776050_13_13?", + "D_271684775_13_13?", + "D_252160589_13_13?", + "D_774774759_13_13?", + "D_127257956_13_13?", + "D_496917282_13_13?", + "D_908129316_13_13?", + "D_795003496_13_13?", + "D_969177591_13_13?", + "D_116065851_13_13?", + "D_278159347_13_13?", + "D_845219872_13_13?", + "CHILDSUM_13_13", + "D_714001034_14_14?", + "D_887697329_14_14?", + "D_473529484_14_14?", + "D_873968217_14_14?", + "D_418392907_14_14?", + "D_640010727_14_14?", + "D_236590500_14_14?", + "D_718867914_14_14?", + "D_812370563_14_14?", + "D_900939817_14_14?", + "D_938150507_14_14?", + "D_601211723_14_14?", + "D_861788020_14_14?", + "D_204425387_14_14?", + "D_558929585_14_14?", + "D_233764880_14_14?", + "D_905145893_14_14?", + "D_473190270_14_14?", + "D_483735587_14_14?", + "D_331759900_14_14?", + "D_513077276_14_14?", + "D_519974530_14_14?", + "D_907776050_14_14?", + "D_271684775_14_14?", + "D_252160589_14_14?", + "D_774774759_14_14?", + "D_127257956_14_14?", + "D_496917282_14_14?", + "D_908129316_14_14?", + "D_795003496_14_14?", + "D_969177591_14_14?", + "D_116065851_14_14?", + "D_278159347_14_14?", + "D_845219872_14_14?", + "CHILDSUM_14_14", + "D_714001034_15_15?", + "D_887697329_15_15?", + "D_473529484_15_15?", + "D_873968217_15_15?", + "D_418392907_15_15?", + "D_640010727_15_15?", + "D_236590500_15_15?", + "D_718867914_15_15?", + "D_812370563_15_15?", + "D_900939817_15_15?", + "D_938150507_15_15?", + "D_601211723_15_15?", + "D_861788020_15_15?", + "D_204425387_15_15?", + "D_558929585_15_15?", + "D_233764880_15_15?", + "D_905145893_15_15?", + "D_473190270_15_15?", + "D_483735587_15_15?", + "D_331759900_15_15?", + "D_513077276_15_15?", + "D_519974530_15_15?", + "D_907776050_15_15?", + "D_271684775_15_15?", + "D_252160589_15_15?", + "D_774774759_15_15?", + "D_127257956_15_15?", + "D_496917282_15_15?", + "D_908129316_15_15?", + "D_795003496_15_15?", + "D_969177591_15_15?", + "D_116065851_15_15?", + "D_278159347_15_15?", + "D_845219872_15_15?", + "CHILDSUM_15_15", + "D_714001034_16_16?", + "D_887697329_16_16?", + "D_473529484_16_16?", + "D_873968217_16_16?", + "D_418392907_16_16?", + "D_640010727_16_16?", + "D_236590500_16_16?", + "D_718867914_16_16?", + "D_812370563_16_16?", + "D_900939817_16_16?", + "D_938150507_16_16?", + "D_601211723_16_16?", + "D_861788020_16_16?", + "D_204425387_16_16?", + "D_558929585_16_16?", + "D_233764880_16_16?", + "D_905145893_16_16?", + "D_473190270_16_16?", + "D_483735587_16_16?", + "D_331759900_16_16?", + "D_513077276_16_16?", + "D_519974530_16_16?", + "D_907776050_16_16?", + "D_271684775_16_16?", + "D_252160589_16_16?", + "D_774774759_16_16?", + "D_127257956_16_16?", + "D_496917282_16_16?", + "D_908129316_16_16?", + "D_795003496_16_16?", + "D_969177591_16_16?", + "D_116065851_16_16?", + "D_278159347_16_16?", + "D_845219872_16_16?", + "CHILDSUM_16_16", + "D_714001034_17_17?", + "D_887697329_17_17?", + "D_473529484_17_17?", + "D_873968217_17_17?", + "D_418392907_17_17?", + "D_640010727_17_17?", + "D_236590500_17_17?", + "D_718867914_17_17?", + "D_812370563_17_17?", + "D_900939817_17_17?", + "D_938150507_17_17?", + "D_601211723_17_17?", + "D_861788020_17_17?", + "D_204425387_17_17?", + "D_558929585_17_17?", + "D_233764880_17_17?", + "D_905145893_17_17?", + "D_473190270_17_17?", + "D_483735587_17_17?", + "D_331759900_17_17?", + "D_513077276_17_17?", + "D_519974530_17_17?", + "D_907776050_17_17?", + "D_271684775_17_17?", + "D_252160589_17_17?", + "D_774774759_17_17?", + "D_127257956_17_17?", + "D_496917282_17_17?", + "D_908129316_17_17?", + "D_795003496_17_17?", + "D_969177591_17_17?", + "D_116065851_17_17?", + "D_278159347_17_17?", + "D_845219872_17_17?", + "CHILDSUM_17_17", + "D_714001034_18_18?", + "D_887697329_18_18?", + "D_473529484_18_18?", + "D_873968217_18_18?", + "D_418392907_18_18?", + "D_640010727_18_18?", + "D_236590500_18_18?", + "D_718867914_18_18?", + "D_812370563_18_18?", + "D_900939817_18_18?", + "D_938150507_18_18?", + "D_601211723_18_18?", + "D_861788020_18_18?", + "D_204425387_18_18?", + "D_558929585_18_18?", + "D_233764880_18_18?", + "D_905145893_18_18?", + "D_473190270_18_18?", + "D_483735587_18_18?", + "D_331759900_18_18?", + "D_513077276_18_18?", + "D_519974530_18_18?", + "D_907776050_18_18?", + "D_271684775_18_18?", + "D_252160589_18_18?", + "D_774774759_18_18?", + "D_127257956_18_18?", + "D_496917282_18_18?", + "D_908129316_18_18?", + "D_795003496_18_18?", + "D_969177591_18_18?", + "D_116065851_18_18?", + "D_278159347_18_18?", + "D_845219872_18_18?", + "CHILDSUM_18_18", + "D_714001034_19_19?", + "D_887697329_19_19?", + "D_473529484_19_19?", + "D_873968217_19_19?", + "D_418392907_19_19?", + "D_640010727_19_19?", + "D_236590500_19_19?", + "D_718867914_19_19?", + "D_812370563_19_19?", + "D_900939817_19_19?", + "D_938150507_19_19?", + "D_601211723_19_19?", + "D_861788020_19_19?", + "D_204425387_19_19?", + "D_558929585_19_19?", + "D_233764880_19_19?", + "D_905145893_19_19?", + "D_473190270_19_19?", + "D_483735587_19_19?", + "D_331759900_19_19?", + "D_513077276_19_19?", + "D_519974530_19_19?", + "D_907776050_19_19?", + "D_271684775_19_19?", + "D_252160589_19_19?", + "D_774774759_19_19?", + "D_127257956_19_19?", + "D_496917282_19_19?", + "D_908129316_19_19?", + "D_795003496_19_19?", + "D_969177591_19_19?", + "D_116065851_19_19?", + "D_278159347_19_19?", + "D_845219872_19_19?", + "CHILDSUM_19_19", + "D_714001034_20_20?", + "D_887697329_20_20?", + "D_473529484_20_20?", + "D_873968217_20_20?", + "D_418392907_20_20?", + "D_640010727_20_20?", + "D_236590500_20_20?", + "D_718867914_20_20?", + "D_812370563_20_20?", + "D_900939817_20_20?", + "D_938150507_20_20?", + "D_601211723_20_20?", + "D_861788020_20_20?", + "D_204425387_20_20?", + "D_558929585_20_20?", + "D_233764880_20_20?", + "D_905145893_20_20?", + "D_473190270_20_20?", + "D_483735587_20_20?", + "D_331759900_20_20?", + "D_513077276_20_20?", + "D_519974530_20_20?", + "D_907776050_20_20?", + "D_271684775_20_20?", + "D_252160589_20_20?", + "D_774774759_20_20?", + "D_127257956_20_20?", + "D_496917282_20_20?", + "D_908129316_20_20?", + "D_795003496_20_20?", + "D_969177591_20_20?", + "D_116065851_20_20?", + "D_278159347_20_20?", + "D_845219872_20_20?", + "CHILDSUM_20_20", + "D_714001034_21_21?", + "D_887697329_21_21?", + "D_473529484_21_21?", + "D_873968217_21_21?", + "D_418392907_21_21?", + "D_640010727_21_21?", + "D_236590500_21_21?", + "D_718867914_21_21?", + "D_812370563_21_21?", + "D_900939817_21_21?", + "D_938150507_21_21?", + "D_601211723_21_21?", + "D_861788020_21_21?", + "D_204425387_21_21?", + "D_558929585_21_21?", + "D_233764880_21_21?", + "D_905145893_21_21?", + "D_473190270_21_21?", + "D_483735587_21_21?", + "D_331759900_21_21?", + "D_513077276_21_21?", + "D_519974530_21_21?", + "D_907776050_21_21?", + "D_271684775_21_21?", + "D_252160589_21_21?", + "D_774774759_21_21?", + "D_127257956_21_21?", + "D_496917282_21_21?", + "D_908129316_21_21?", + "D_795003496_21_21?", + "D_969177591_21_21?", + "D_116065851_21_21?", + "D_278159347_21_21?", + "D_845219872_21_21?", + "CHILDSUM_21_21", + "D_714001034_22_22?", + "D_887697329_22_22?", + "D_473529484_22_22?", + "D_873968217_22_22?", + "D_418392907_22_22?", + "D_640010727_22_22?", + "D_236590500_22_22?", + "D_718867914_22_22?", + "D_812370563_22_22?", + "D_900939817_22_22?", + "D_938150507_22_22?", + "D_601211723_22_22?", + "D_861788020_22_22?", + "D_204425387_22_22?", + "D_558929585_22_22?", + "D_233764880_22_22?", + "D_905145893_22_22?", + "D_473190270_22_22?", + "D_483735587_22_22?", + "D_331759900_22_22?", + "D_513077276_22_22?", + "D_519974530_22_22?", + "D_907776050_22_22?", + "D_271684775_22_22?", + "D_252160589_22_22?", + "D_774774759_22_22?", + "D_127257956_22_22?", + "D_496917282_22_22?", + "D_908129316_22_22?", + "D_795003496_22_22?", + "D_969177591_22_22?", + "D_116065851_22_22?", + "D_278159347_22_22?", + "D_845219872_22_22?", + "CHILDSUM_22_22", + "D_714001034_23_23?", + "D_887697329_23_23?", + "D_473529484_23_23?", + "D_873968217_23_23?", + "D_418392907_23_23?", + "D_640010727_23_23?", + "D_236590500_23_23?", + "D_718867914_23_23?", + "D_812370563_23_23?", + "D_900939817_23_23?", + "D_938150507_23_23?", + "D_601211723_23_23?", + "D_861788020_23_23?", + "D_204425387_23_23?", + "D_558929585_23_23?", + "D_233764880_23_23?", + "D_905145893_23_23?", + "D_473190270_23_23?", + "D_483735587_23_23?", + "D_331759900_23_23?", + "D_513077276_23_23?", + "D_519974530_23_23?", + "D_907776050_23_23?", + "D_271684775_23_23?", + "D_252160589_23_23?", + "D_774774759_23_23?", + "D_127257956_23_23?", + "D_496917282_23_23?", + "D_908129316_23_23?", + "D_795003496_23_23?", + "D_969177591_23_23?", + "D_116065851_23_23?", + "D_278159347_23_23?", + "D_845219872_23_23?", + "CHILDSUM_23_23", + "D_714001034_24_24?", + "D_887697329_24_24?", + "D_473529484_24_24?", + "D_873968217_24_24?", + "D_418392907_24_24?", + "D_640010727_24_24?", + "D_236590500_24_24?", + "D_718867914_24_24?", + "D_812370563_24_24?", + "D_900939817_24_24?", + "D_938150507_24_24?", + "D_601211723_24_24?", + "D_861788020_24_24?", + "D_204425387_24_24?", + "D_558929585_24_24?", + "D_233764880_24_24?", + "D_905145893_24_24?", + "D_473190270_24_24?", + "D_483735587_24_24?", + "D_331759900_24_24?", + "D_513077276_24_24?", + "D_519974530_24_24?", + "D_907776050_24_24?", + "D_271684775_24_24?", + "D_252160589_24_24?", + "D_774774759_24_24?", + "D_127257956_24_24?", + "D_496917282_24_24?", + "D_908129316_24_24?", + "D_795003496_24_24?", + "D_969177591_24_24?", + "D_116065851_24_24?", + "D_278159347_24_24?", + "D_845219872_24_24?", + "CHILDSUM_24_24", + "D_714001034_25_25?", + "D_887697329_25_25?", + "D_473529484_25_25?", + "D_873968217_25_25?", + "D_418392907_25_25?", + "D_640010727_25_25?", + "D_236590500_25_25?", + "D_718867914_25_25?", + "D_812370563_25_25?", + "D_900939817_25_25?", + "D_938150507_25_25?", + "D_601211723_25_25?", + "D_861788020_25_25?", + "D_204425387_25_25?", + "D_558929585_25_25?", + "D_233764880_25_25?", + "D_905145893_25_25?", + "D_473190270_25_25?", + "D_483735587_25_25?", + "D_331759900_25_25?", + "D_513077276_25_25?", + "D_519974530_25_25?", + "D_907776050_25_25?", + "D_271684775_25_25?", + "D_252160589_25_25?", + "D_774774759_25_25?", + "D_127257956_25_25?", + "D_496917282_25_25?", + "D_908129316_25_25?", + "D_795003496_25_25?", + "D_969177591_25_25?", + "D_116065851_25_25?", + "D_278159347_25_25?", + "D_845219872_25_25?", + "CHILDSUM_25_25", + "END_OF_LOOP", + "SECTION5", + "D_367803647?", + "D_784967158?", + "D_613744428?", + "D_114529380?", + "D_627122657?", + "D_796828094?", + "D_761310265?", + "D_434316600?", + "D_700374192?", + "D_868232409?", + "D_739294356?", + "D_847533056?", + "D_403258164?", + "D_118061122?", + "D_518387017?", + "D_279637054?", + "D_988878019?", + "D_530742915?", + "D_233198706?", + "D_686172464?", + "D_759004335?", + "D_641651634?", + "D_431721131?", + "END" + ], + "responseControlsByType": { + "checkbox": 1725, + "number": 2874, + "radio": 883, + "text": 126, + "textarea": 2 + }, + "explicitTransitions": { + "targets": [ + "D_362270886", + "D_525535977", + "D_976808005", + "D_308014437", + "D_351657815", + "D_115616118", + "D_797626610", + "D_588212264", + "D_167101091", + "D_508846529", + "D_965917116", + "D_929240175", + "D_836712013", + "D_836890480", + "D_624479779", + "D_337278854", + "D_681229479", + "D_660358706", + "D_884793537", + "D_460062034", + "D_110652436", + "D_894259747", + "D_448722126", + "D_201449164", + "D_436333358", + "D_180961306", + "D_554782332", + "D_409622468", + "D_448476881", + "D_459764934", + "D_374697037", + "D_580911251", + "D_190347832", + "D_624777141", + "D_980403315", + "D_936039586", + "D_430472084", + "D_900541533", + "D_139655599", + "D_494032093", + "D_810918716", + "D_874046190", + "D_301679110", + "D_989016875", + "D_878094302", + "D_543728565", + "D_173101988", + "D_245861186", + "D_420423416", + "INTROSTD", + "D_915230886", + "D_530548878", + "D_469947273", + "D_685735916", + "D_954405492", + "D_103397024", + "D_931470797", + "D_922524563", + "D_978485677", + "D_523188839", + "D_725626004", + "D_846786840", + "D_423547108", + "D_852898339", + "D_467061940", + "D_619481697", + "DEPRESSINTRO", + "D_266847650", + "D_134642404", + "D_219956652", + "D_852236900", + "D_301414575", + "INTROSURG", + "D_367884741", + "D_178353079", + "D_550075233", + "D_927516732", + "D_552788665", + "D_439736294", + "D_860920332", + "D_986613440", + "D_517307064", + "D_150352141", + "D_122887481", + "D_378892977", + "D_224791140", + "D_518750011", + "D_946504570", + "D_107060069", + "D_527057404", + "D_453252072", + "D_216506024", + "D_477690298", + "D_176453768", + "D_145786416", + "D_287605131", + "D_701157499", + "D_428639167", + "D_282355641", + "D_539301647", + "D_579225381", + "D_891214661", + "D_534007917", + "D_752636038", + "D_275770221", + "D_882152987", + "D_875208305", + "D_795940097", + "D_406011084", + "D_593017220", + "D_338924834", + "D_746012894", + "D_936904328", + "D_365851428", + "D_206319592", + "D_283634623", + "D_164752169", + "FAMHISTINTRO", + "D_512167179", + "D_509933065", + "D_967093163", + "D_422714611", + "D_354326265", + "D_276353712", + "D_367374606", + "D_814510313", + "D_259397450", + "D_528753070", + "D_683981980", + "D_402548942", + "D_247198016", + "D_891925519", + "D_317093647", + "D_684692228", + "D_671347092", + "D_875221479", + "D_186170949", + "D_726451917", + "D_213545903", + "D_765903702", + "D_773974223", + "D_433604862", + "D_521369040", + "D_497311092", + "D_625249910", + "D_838564850", + "D_633764113", + "D_882263738", + "D_671308090", + "D_628078826", + "D_178774803", + "D_659784914", + "SIB", + "D_173240848", + "D_345146692", + "D_243443318", + "D_610382315", + "D_135519371", + "D_785019074", + "D_152885579", + "D_692910565", + "D_522464057", + "D_808655074", + "D_659627058", + "D_370198527", + "D_291855684", + "D_413536735", + "D_210325948", + "D_193297280", + "D_121502359", + "D_489402657", + "D_727260639", + "D_359291056", + "D_968841976", + "D_864981804", + "D_499434567", + "D_890637099_1_1", + "D_869387390_1_1", + "D_537137982_1_1", + "D_607773106_1_1", + "_CONTINUE1_1_1", + "D_578895128_1_1", + "D_384881609_1_1", + "D_483975329_1_1", + "D_570279754_1_1", + "D_907590067_1_1", + "D_860112841_1_1", + "D_158354252_1_1", + "D_654594205_1_1", + "D_550722030_1_1", + "D_142912472_1_1", + "D_158409298_1_1", + "D_529744595_1_1", + "D_315987564_1_1", + "D_852278004_1_1", + "D_391972881_1_1", + "D_259089008_1_1", + "D_209771602_1_1", + "D_682651189_1_1", + "D_750994269_1_1", + "D_700889863_1_1", + "D_990114799_1_1", + "D_195363361_1_1", + "D_216840563_1_1", + "D_514034680_1_1", + "D_247160067_1_1", + "D_312545873_1_1", + "SIBSUM_1_1", + "D_890637099_2_2", + "D_869387390_2_2", + "D_537137982_2_2", + "D_607773106_2_2", + "_CONTINUE1_2_2", + "D_578895128_2_2", + "D_384881609_2_2", + "D_483975329_2_2", + "D_570279754_2_2", + "D_907590067_2_2", + "D_860112841_2_2", + "D_158354252_2_2", + "D_654594205_2_2", + "D_550722030_2_2", + "D_142912472_2_2", + "D_158409298_2_2", + "D_529744595_2_2", + "D_315987564_2_2", + "D_852278004_2_2", + "D_391972881_2_2", + "D_259089008_2_2", + "D_209771602_2_2", + "D_682651189_2_2", + "D_750994269_2_2", + "D_700889863_2_2", + "D_990114799_2_2", + "D_195363361_2_2", + "D_216840563_2_2", + "D_514034680_2_2", + "D_247160067_2_2", + "D_312545873_2_2", + "SIBSUM_2_2", + "D_890637099_3_3", + "D_869387390_3_3", + "D_537137982_3_3", + "D_607773106_3_3", + "_CONTINUE1_3_3", + "D_578895128_3_3", + "D_384881609_3_3", + "D_483975329_3_3", + "D_570279754_3_3", + "D_907590067_3_3", + "D_860112841_3_3", + "D_158354252_3_3", + "D_654594205_3_3", + "D_550722030_3_3", + "D_142912472_3_3", + "D_158409298_3_3", + "D_529744595_3_3", + "D_315987564_3_3", + "D_852278004_3_3", + "D_391972881_3_3", + "D_259089008_3_3", + "D_209771602_3_3", + "D_682651189_3_3", + "D_750994269_3_3", + "D_700889863_3_3", + "D_990114799_3_3", + "D_195363361_3_3", + "D_216840563_3_3", + "D_514034680_3_3", + "D_247160067_3_3", + "D_312545873_3_3", + "SIBSUM_3_3", + "D_890637099_4_4", + "D_869387390_4_4", + "D_537137982_4_4", + "D_607773106_4_4", + "_CONTINUE1_4_4", + "D_578895128_4_4", + "D_384881609_4_4", + "D_483975329_4_4", + "D_570279754_4_4", + "D_907590067_4_4", + "D_860112841_4_4", + "D_158354252_4_4", + "D_654594205_4_4", + "D_550722030_4_4", + "D_142912472_4_4", + "D_158409298_4_4", + "D_529744595_4_4", + "D_315987564_4_4", + "D_852278004_4_4", + "D_391972881_4_4", + "D_259089008_4_4", + "D_209771602_4_4", + "D_682651189_4_4", + "D_750994269_4_4", + "D_700889863_4_4", + "D_990114799_4_4", + "D_195363361_4_4", + "D_216840563_4_4", + "D_514034680_4_4", + "D_247160067_4_4", + "D_312545873_4_4", + "SIBSUM_4_4", + "D_890637099_5_5", + "D_869387390_5_5", + "D_537137982_5_5", + "D_607773106_5_5", + "_CONTINUE1_5_5", + "D_578895128_5_5", + "D_384881609_5_5", + "D_483975329_5_5", + "D_570279754_5_5", + "D_907590067_5_5", + "D_860112841_5_5", + "D_158354252_5_5", + "D_654594205_5_5", + "D_550722030_5_5", + "D_142912472_5_5", + "D_158409298_5_5", + "D_529744595_5_5", + "D_315987564_5_5", + "D_852278004_5_5", + "D_391972881_5_5", + "D_259089008_5_5", + "D_209771602_5_5", + "D_682651189_5_5", + "D_750994269_5_5", + "D_700889863_5_5", + "D_990114799_5_5", + "D_195363361_5_5", + "D_216840563_5_5", + "D_514034680_5_5", + "D_247160067_5_5", + "D_312545873_5_5", + "SIBSUM_5_5", + "D_890637099_6_6", + "D_869387390_6_6", + "D_537137982_6_6", + "D_607773106_6_6", + "_CONTINUE1_6_6", + "D_578895128_6_6", + "D_384881609_6_6", + "D_483975329_6_6", + "D_570279754_6_6", + "D_907590067_6_6", + "D_860112841_6_6", + "D_158354252_6_6", + "D_654594205_6_6", + "D_550722030_6_6", + "D_142912472_6_6", + "D_158409298_6_6", + "D_529744595_6_6", + "D_315987564_6_6", + "D_852278004_6_6", + "D_391972881_6_6", + "D_259089008_6_6", + "D_209771602_6_6", + "D_682651189_6_6", + "D_750994269_6_6", + "D_700889863_6_6", + "D_990114799_6_6", + "D_195363361_6_6", + "D_216840563_6_6", + "D_514034680_6_6", + "D_247160067_6_6", + "D_312545873_6_6", + "SIBSUM_6_6", + "D_890637099_7_7", + "D_869387390_7_7", + "D_537137982_7_7", + "D_607773106_7_7", + "_CONTINUE1_7_7", + "D_578895128_7_7", + "D_384881609_7_7", + "D_483975329_7_7", + "D_570279754_7_7", + "D_907590067_7_7", + "D_860112841_7_7", + "D_158354252_7_7", + "D_654594205_7_7", + "D_550722030_7_7", + "D_142912472_7_7", + "D_158409298_7_7", + "D_529744595_7_7", + "D_315987564_7_7", + "D_852278004_7_7", + "D_391972881_7_7", + "D_259089008_7_7", + "D_209771602_7_7", + "D_682651189_7_7", + "D_750994269_7_7", + "D_700889863_7_7", + "D_990114799_7_7", + "D_195363361_7_7", + "D_216840563_7_7", + "D_514034680_7_7", + "D_247160067_7_7", + "D_312545873_7_7", + "SIBSUM_7_7", + "D_890637099_8_8", + "D_869387390_8_8", + "D_537137982_8_8", + "D_607773106_8_8", + "_CONTINUE1_8_8", + "D_578895128_8_8", + "D_384881609_8_8", + "D_483975329_8_8", + "D_570279754_8_8", + "D_907590067_8_8", + "D_860112841_8_8", + "D_158354252_8_8", + "D_654594205_8_8", + "D_550722030_8_8", + "D_142912472_8_8", + "D_158409298_8_8", + "D_529744595_8_8", + "D_315987564_8_8", + "D_852278004_8_8", + "D_391972881_8_8", + "D_259089008_8_8", + "D_209771602_8_8", + "D_682651189_8_8", + "D_750994269_8_8", + "D_700889863_8_8", + "D_990114799_8_8", + "D_195363361_8_8", + "D_216840563_8_8", + "D_514034680_8_8", + "D_247160067_8_8", + "D_312545873_8_8", + "SIBSUM_8_8", + "D_890637099_9_9", + "D_869387390_9_9", + "D_537137982_9_9", + "D_607773106_9_9", + "_CONTINUE1_9_9", + "D_578895128_9_9", + "D_384881609_9_9", + "D_483975329_9_9", + "D_570279754_9_9", + "D_907590067_9_9", + "D_860112841_9_9", + "D_158354252_9_9", + "D_654594205_9_9", + "D_550722030_9_9", + "D_142912472_9_9", + "D_158409298_9_9", + "D_529744595_9_9", + "D_315987564_9_9", + "D_852278004_9_9", + "D_391972881_9_9", + "D_259089008_9_9", + "D_209771602_9_9", + "D_682651189_9_9", + "D_750994269_9_9", + "D_700889863_9_9", + "D_990114799_9_9", + "D_195363361_9_9", + "D_216840563_9_9", + "D_514034680_9_9", + "D_247160067_9_9", + "D_312545873_9_9", + "SIBSUM_9_9", + "D_890637099_10_10", + "D_869387390_10_10", + "D_537137982_10_10", + "D_607773106_10_10", + "_CONTINUE1_10_10", + "D_578895128_10_10", + "D_384881609_10_10", + "D_483975329_10_10", + "D_570279754_10_10", + "D_907590067_10_10", + "D_860112841_10_10", + "D_158354252_10_10", + "D_654594205_10_10", + "D_550722030_10_10", + "D_142912472_10_10", + "D_158409298_10_10", + "D_529744595_10_10", + "D_315987564_10_10", + "D_852278004_10_10", + "D_391972881_10_10", + "D_259089008_10_10", + "D_209771602_10_10", + "D_682651189_10_10", + "D_750994269_10_10", + "D_700889863_10_10", + "D_990114799_10_10", + "D_195363361_10_10", + "D_216840563_10_10", + "D_514034680_10_10", + "D_247160067_10_10", + "D_312545873_10_10", + "SIBSUM_10_10", + "D_890637099_11_11", + "D_869387390_11_11", + "D_537137982_11_11", + "D_607773106_11_11", + "_CONTINUE1_11_11", + "D_578895128_11_11", + "D_384881609_11_11", + "D_483975329_11_11", + "D_570279754_11_11", + "D_907590067_11_11", + "D_860112841_11_11", + "D_158354252_11_11", + "D_654594205_11_11", + "D_550722030_11_11", + "D_142912472_11_11", + "D_158409298_11_11", + "D_529744595_11_11", + "D_315987564_11_11", + "D_852278004_11_11", + "D_391972881_11_11", + "D_259089008_11_11", + "D_209771602_11_11", + "D_682651189_11_11", + "D_750994269_11_11", + "D_700889863_11_11", + "D_990114799_11_11", + "D_195363361_11_11", + "D_216840563_11_11", + "D_514034680_11_11", + "D_247160067_11_11", + "D_312545873_11_11", + "SIBSUM_11_11", + "D_890637099_12_12", + "D_869387390_12_12", + "D_537137982_12_12", + "D_607773106_12_12", + "_CONTINUE1_12_12", + "D_578895128_12_12", + "D_384881609_12_12", + "D_483975329_12_12", + "D_570279754_12_12", + "D_907590067_12_12", + "D_860112841_12_12", + "D_158354252_12_12", + "D_654594205_12_12", + "D_550722030_12_12", + "D_142912472_12_12", + "D_158409298_12_12", + "D_529744595_12_12", + "D_315987564_12_12", + "D_852278004_12_12", + "D_391972881_12_12", + "D_259089008_12_12", + "D_209771602_12_12", + "D_682651189_12_12", + "D_750994269_12_12", + "D_700889863_12_12", + "D_990114799_12_12", + "D_195363361_12_12", + "D_216840563_12_12", + "D_514034680_12_12", + "D_247160067_12_12", + "D_312545873_12_12", + "SIBSUM_12_12", + "D_890637099_13_13", + "D_869387390_13_13", + "D_537137982_13_13", + "D_607773106_13_13", + "_CONTINUE1_13_13", + "D_578895128_13_13", + "D_384881609_13_13", + "D_483975329_13_13", + "D_570279754_13_13", + "D_907590067_13_13", + "D_860112841_13_13", + "D_158354252_13_13", + "D_654594205_13_13", + "D_550722030_13_13", + "D_142912472_13_13", + "D_158409298_13_13", + "D_529744595_13_13", + "D_315987564_13_13", + "D_852278004_13_13", + "D_391972881_13_13", + "D_259089008_13_13", + "D_209771602_13_13", + "D_682651189_13_13", + "D_750994269_13_13", + "D_700889863_13_13", + "D_990114799_13_13", + "D_195363361_13_13", + "D_216840563_13_13", + "D_514034680_13_13", + "D_247160067_13_13", + "D_312545873_13_13", + "SIBSUM_13_13", + "D_890637099_14_14", + "D_869387390_14_14", + "D_537137982_14_14", + "D_607773106_14_14", + "_CONTINUE1_14_14", + "D_578895128_14_14", + "D_384881609_14_14", + "D_483975329_14_14", + "D_570279754_14_14", + "D_907590067_14_14", + "D_860112841_14_14", + "D_158354252_14_14", + "D_654594205_14_14", + "D_550722030_14_14", + "D_142912472_14_14", + "D_158409298_14_14", + "D_529744595_14_14", + "D_315987564_14_14", + "D_852278004_14_14", + "D_391972881_14_14", + "D_259089008_14_14", + "D_209771602_14_14", + "D_682651189_14_14", + "D_750994269_14_14", + "D_700889863_14_14", + "D_990114799_14_14", + "D_195363361_14_14", + "D_216840563_14_14", + "D_514034680_14_14", + "D_247160067_14_14", + "D_312545873_14_14", + "SIBSUM_14_14", + "D_890637099_15_15", + "D_869387390_15_15", + "D_537137982_15_15", + "D_607773106_15_15", + "_CONTINUE1_15_15", + "D_578895128_15_15", + "D_384881609_15_15", + "D_483975329_15_15", + "D_570279754_15_15", + "D_907590067_15_15", + "D_860112841_15_15", + "D_158354252_15_15", + "D_654594205_15_15", + "D_550722030_15_15", + "D_142912472_15_15", + "D_158409298_15_15", + "D_529744595_15_15", + "D_315987564_15_15", + "D_852278004_15_15", + "D_391972881_15_15", + "D_259089008_15_15", + "D_209771602_15_15", + "D_682651189_15_15", + "D_750994269_15_15", + "D_700889863_15_15", + "D_990114799_15_15", + "D_195363361_15_15", + "D_216840563_15_15", + "D_514034680_15_15", + "D_247160067_15_15", + "D_312545873_15_15", + "SIBSUM_15_15", + "D_890637099_16_16", + "D_869387390_16_16", + "D_537137982_16_16", + "D_607773106_16_16", + "_CONTINUE1_16_16", + "D_578895128_16_16", + "D_384881609_16_16", + "D_483975329_16_16", + "D_570279754_16_16", + "D_907590067_16_16", + "D_860112841_16_16", + "D_158354252_16_16", + "D_654594205_16_16", + "D_550722030_16_16", + "D_142912472_16_16", + "D_158409298_16_16", + "D_529744595_16_16", + "D_315987564_16_16", + "D_852278004_16_16", + "D_391972881_16_16", + "D_259089008_16_16", + "D_209771602_16_16", + "D_682651189_16_16", + "D_750994269_16_16", + "D_700889863_16_16", + "D_990114799_16_16", + "D_195363361_16_16", + "D_216840563_16_16", + "D_514034680_16_16", + "D_247160067_16_16", + "D_312545873_16_16", + "SIBSUM_16_16", + "D_890637099_17_17", + "D_869387390_17_17", + "D_537137982_17_17", + "D_607773106_17_17", + "_CONTINUE1_17_17", + "D_578895128_17_17", + "D_384881609_17_17", + "D_483975329_17_17", + "D_570279754_17_17", + "D_907590067_17_17", + "D_860112841_17_17", + "D_158354252_17_17", + "D_654594205_17_17", + "D_550722030_17_17", + "D_142912472_17_17", + "D_158409298_17_17", + "D_529744595_17_17", + "D_315987564_17_17", + "D_852278004_17_17", + "D_391972881_17_17", + "D_259089008_17_17", + "D_209771602_17_17", + "D_682651189_17_17", + "D_750994269_17_17", + "D_700889863_17_17", + "D_990114799_17_17", + "D_195363361_17_17", + "D_216840563_17_17", + "D_514034680_17_17", + "D_247160067_17_17", + "D_312545873_17_17", + "SIBSUM_17_17", + "D_890637099_18_18", + "D_869387390_18_18", + "D_537137982_18_18", + "D_607773106_18_18", + "_CONTINUE1_18_18", + "D_578895128_18_18", + "D_384881609_18_18", + "D_483975329_18_18", + "D_570279754_18_18", + "D_907590067_18_18", + "D_860112841_18_18", + "D_158354252_18_18", + "D_654594205_18_18", + "D_550722030_18_18", + "D_142912472_18_18", + "D_158409298_18_18", + "D_529744595_18_18", + "D_315987564_18_18", + "D_852278004_18_18", + "D_391972881_18_18", + "D_259089008_18_18", + "D_209771602_18_18", + "D_682651189_18_18", + "D_750994269_18_18", + "D_700889863_18_18", + "D_990114799_18_18", + "D_195363361_18_18", + "D_216840563_18_18", + "D_514034680_18_18", + "D_247160067_18_18", + "D_312545873_18_18", + "SIBSUM_18_18", + "D_890637099_19_19", + "D_869387390_19_19", + "D_537137982_19_19", + "D_607773106_19_19", + "_CONTINUE1_19_19", + "D_578895128_19_19", + "D_384881609_19_19", + "D_483975329_19_19", + "D_570279754_19_19", + "D_907590067_19_19", + "D_860112841_19_19", + "D_158354252_19_19", + "D_654594205_19_19", + "D_550722030_19_19", + "D_142912472_19_19", + "D_158409298_19_19", + "D_529744595_19_19", + "D_315987564_19_19", + "D_852278004_19_19", + "D_391972881_19_19", + "D_259089008_19_19", + "D_209771602_19_19", + "D_682651189_19_19", + "D_750994269_19_19", + "D_700889863_19_19", + "D_990114799_19_19", + "D_195363361_19_19", + "D_216840563_19_19", + "D_514034680_19_19", + "D_247160067_19_19", + "D_312545873_19_19", + "SIBSUM_19_19", + "D_890637099_20_20", + "D_869387390_20_20", + "D_537137982_20_20", + "D_607773106_20_20", + "_CONTINUE1_20_20", + "D_578895128_20_20", + "D_384881609_20_20", + "D_483975329_20_20", + "D_570279754_20_20", + "D_907590067_20_20", + "D_860112841_20_20", + "D_158354252_20_20", + "D_654594205_20_20", + "D_550722030_20_20", + "D_142912472_20_20", + "D_158409298_20_20", + "D_529744595_20_20", + "D_315987564_20_20", + "D_852278004_20_20", + "D_391972881_20_20", + "D_259089008_20_20", + "D_209771602_20_20", + "D_682651189_20_20", + "D_750994269_20_20", + "D_700889863_20_20", + "D_990114799_20_20", + "D_195363361_20_20", + "D_216840563_20_20", + "D_514034680_20_20", + "D_247160067_20_20", + "D_312545873_20_20", + "SIBSUM_20_20", + "D_890637099_21_21", + "D_869387390_21_21", + "D_537137982_21_21", + "D_607773106_21_21", + "_CONTINUE1_21_21", + "D_578895128_21_21", + "D_384881609_21_21", + "D_483975329_21_21", + "D_570279754_21_21", + "D_907590067_21_21", + "D_860112841_21_21", + "D_158354252_21_21", + "D_654594205_21_21", + "D_550722030_21_21", + "D_142912472_21_21", + "D_158409298_21_21", + "D_529744595_21_21", + "D_315987564_21_21", + "D_852278004_21_21", + "D_391972881_21_21", + "D_259089008_21_21", + "D_209771602_21_21", + "D_682651189_21_21", + "D_750994269_21_21", + "D_700889863_21_21", + "D_990114799_21_21", + "D_195363361_21_21", + "D_216840563_21_21", + "D_514034680_21_21", + "D_247160067_21_21", + "D_312545873_21_21", + "SIBSUM_21_21", + "D_890637099_22_22", + "D_869387390_22_22", + "D_537137982_22_22", + "D_607773106_22_22", + "_CONTINUE1_22_22", + "D_578895128_22_22", + "D_384881609_22_22", + "D_483975329_22_22", + "D_570279754_22_22", + "D_907590067_22_22", + "D_860112841_22_22", + "D_158354252_22_22", + "D_654594205_22_22", + "D_550722030_22_22", + "D_142912472_22_22", + "D_158409298_22_22", + "D_529744595_22_22", + "D_315987564_22_22", + "D_852278004_22_22", + "D_391972881_22_22", + "D_259089008_22_22", + "D_209771602_22_22", + "D_682651189_22_22", + "D_750994269_22_22", + "D_700889863_22_22", + "D_990114799_22_22", + "D_195363361_22_22", + "D_216840563_22_22", + "D_514034680_22_22", + "D_247160067_22_22", + "D_312545873_22_22", + "SIBSUM_22_22", + "D_890637099_23_23", + "D_869387390_23_23", + "D_537137982_23_23", + "D_607773106_23_23", + "_CONTINUE1_23_23", + "D_578895128_23_23", + "D_384881609_23_23", + "D_483975329_23_23", + "D_570279754_23_23", + "D_907590067_23_23", + "D_860112841_23_23", + "D_158354252_23_23", + "D_654594205_23_23", + "D_550722030_23_23", + "D_142912472_23_23", + "D_158409298_23_23", + "D_529744595_23_23", + "D_315987564_23_23", + "D_852278004_23_23", + "D_391972881_23_23", + "D_259089008_23_23", + "D_209771602_23_23", + "D_682651189_23_23", + "D_750994269_23_23", + "D_700889863_23_23", + "D_990114799_23_23", + "D_195363361_23_23", + "D_216840563_23_23", + "D_514034680_23_23", + "D_247160067_23_23", + "D_312545873_23_23", + "SIBSUM_23_23", + "D_890637099_24_24", + "D_869387390_24_24", + "D_537137982_24_24", + "D_607773106_24_24", + "_CONTINUE1_24_24", + "D_578895128_24_24", + "D_384881609_24_24", + "D_483975329_24_24", + "D_570279754_24_24", + "D_907590067_24_24", + "D_860112841_24_24", + "D_158354252_24_24", + "D_654594205_24_24", + "D_550722030_24_24", + "D_142912472_24_24", + "D_158409298_24_24", + "D_529744595_24_24", + "D_315987564_24_24", + "D_852278004_24_24", + "D_391972881_24_24", + "D_259089008_24_24", + "D_209771602_24_24", + "D_682651189_24_24", + "D_750994269_24_24", + "D_700889863_24_24", + "D_990114799_24_24", + "D_195363361_24_24", + "D_216840563_24_24", + "D_514034680_24_24", + "D_247160067_24_24", + "D_312545873_24_24", + "SIBSUM_24_24", + "D_890637099_25_25", + "D_869387390_25_25", + "D_537137982_25_25", + "D_607773106_25_25", + "_CONTINUE1_25_25", + "D_578895128_25_25", + "D_384881609_25_25", + "D_483975329_25_25", + "D_570279754_25_25", + "D_907590067_25_25", + "D_860112841_25_25", + "D_158354252_25_25", + "D_654594205_25_25", + "D_550722030_25_25", + "D_142912472_25_25", + "D_158409298_25_25", + "D_529744595_25_25", + "D_315987564_25_25", + "D_852278004_25_25", + "D_391972881_25_25", + "D_259089008_25_25", + "D_209771602_25_25", + "D_682651189_25_25", + "D_750994269_25_25", + "D_700889863_25_25", + "D_990114799_25_25", + "D_195363361_25_25", + "D_216840563_25_25", + "D_514034680_25_25", + "D_247160067_25_25", + "D_312545873_25_25", + "SIBSUM_25_25", + "D_640010727_1_1", + "D_236590500_1_1", + "D_718867914_1_1", + "_CONTINUE2_1_1", + "D_812370563_1_1", + "D_900939817_1_1", + "D_938150507_1_1", + "D_601211723_1_1", + "D_861788020_1_1", + "D_204425387_1_1", + "D_558929585_1_1", + "D_233764880_1_1", + "D_905145893_1_1", + "D_473190270_1_1", + "D_483735587_1_1", + "D_331759900_1_1", + "D_513077276_1_1", + "D_519974530_1_1", + "D_907776050_1_1", + "D_271684775_1_1", + "D_252160589_1_1", + "D_774774759_1_1", + "D_127257956_1_1", + "D_496917282_1_1", + "D_908129316_1_1", + "D_795003496_1_1", + "D_969177591_1_1", + "D_116065851_1_1", + "D_278159347_1_1", + "D_845219872_1_1", + "CHILDSUM_1_1", + "D_640010727_2_2", + "D_236590500_2_2", + "D_718867914_2_2", + "_CONTINUE2_2_2", + "D_812370563_2_2", + "D_900939817_2_2", + "D_938150507_2_2", + "D_601211723_2_2", + "D_861788020_2_2", + "D_204425387_2_2", + "D_558929585_2_2", + "D_233764880_2_2", + "D_905145893_2_2", + "D_473190270_2_2", + "D_483735587_2_2", + "D_331759900_2_2", + "D_513077276_2_2", + "D_519974530_2_2", + "D_907776050_2_2", + "D_271684775_2_2", + "D_252160589_2_2", + "D_774774759_2_2", + "D_127257956_2_2", + "D_496917282_2_2", + "D_908129316_2_2", + "D_795003496_2_2", + "D_969177591_2_2", + "D_116065851_2_2", + "D_278159347_2_2", + "D_845219872_2_2", + "CHILDSUM_2_2", + "D_640010727_3_3", + "D_236590500_3_3", + "D_718867914_3_3", + "_CONTINUE2_3_3", + "D_812370563_3_3", + "D_900939817_3_3", + "D_938150507_3_3", + "D_601211723_3_3", + "D_861788020_3_3", + "D_204425387_3_3", + "D_558929585_3_3", + "D_233764880_3_3", + "D_905145893_3_3", + "D_473190270_3_3", + "D_483735587_3_3", + "D_331759900_3_3", + "D_513077276_3_3", + "D_519974530_3_3", + "D_907776050_3_3", + "D_271684775_3_3", + "D_252160589_3_3", + "D_774774759_3_3", + "D_127257956_3_3", + "D_496917282_3_3", + "D_908129316_3_3", + "D_795003496_3_3", + "D_969177591_3_3", + "D_116065851_3_3", + "D_278159347_3_3", + "D_845219872_3_3", + "CHILDSUM_3_3", + "D_640010727_4_4", + "D_236590500_4_4", + "D_718867914_4_4", + "_CONTINUE2_4_4", + "D_812370563_4_4", + "D_900939817_4_4", + "D_938150507_4_4", + "D_601211723_4_4", + "D_861788020_4_4", + "D_204425387_4_4", + "D_558929585_4_4", + "D_233764880_4_4", + "D_905145893_4_4", + "D_473190270_4_4", + "D_483735587_4_4", + "D_331759900_4_4", + "D_513077276_4_4", + "D_519974530_4_4", + "D_907776050_4_4", + "D_271684775_4_4", + "D_252160589_4_4", + "D_774774759_4_4", + "D_127257956_4_4", + "D_496917282_4_4", + "D_908129316_4_4", + "D_795003496_4_4", + "D_969177591_4_4", + "D_116065851_4_4", + "D_278159347_4_4", + "D_845219872_4_4", + "CHILDSUM_4_4", + "D_640010727_5_5", + "D_236590500_5_5", + "D_718867914_5_5", + "_CONTINUE2_5_5", + "D_812370563_5_5", + "D_900939817_5_5", + "D_938150507_5_5", + "D_601211723_5_5", + "D_861788020_5_5", + "D_204425387_5_5", + "D_558929585_5_5", + "D_233764880_5_5", + "D_905145893_5_5", + "D_473190270_5_5", + "D_483735587_5_5", + "D_331759900_5_5", + "D_513077276_5_5", + "D_519974530_5_5", + "D_907776050_5_5", + "D_271684775_5_5", + "D_252160589_5_5", + "D_774774759_5_5", + "D_127257956_5_5", + "D_496917282_5_5", + "D_908129316_5_5", + "D_795003496_5_5", + "D_969177591_5_5", + "D_116065851_5_5", + "D_278159347_5_5", + "D_845219872_5_5", + "CHILDSUM_5_5", + "D_640010727_6_6", + "D_236590500_6_6", + "D_718867914_6_6", + "_CONTINUE2_6_6", + "D_812370563_6_6", + "D_900939817_6_6", + "D_938150507_6_6", + "D_601211723_6_6", + "D_861788020_6_6", + "D_204425387_6_6", + "D_558929585_6_6", + "D_233764880_6_6", + "D_905145893_6_6", + "D_473190270_6_6", + "D_483735587_6_6", + "D_331759900_6_6", + "D_513077276_6_6", + "D_519974530_6_6", + "D_907776050_6_6", + "D_271684775_6_6", + "D_252160589_6_6", + "D_774774759_6_6", + "D_127257956_6_6", + "D_496917282_6_6", + "D_908129316_6_6", + "D_795003496_6_6", + "D_969177591_6_6", + "D_116065851_6_6", + "D_278159347_6_6", + "D_845219872_6_6", + "CHILDSUM_6_6", + "D_640010727_7_7", + "D_236590500_7_7", + "D_718867914_7_7", + "_CONTINUE2_7_7", + "D_812370563_7_7", + "D_900939817_7_7", + "D_938150507_7_7", + "D_601211723_7_7", + "D_861788020_7_7", + "D_204425387_7_7", + "D_558929585_7_7", + "D_233764880_7_7", + "D_905145893_7_7", + "D_473190270_7_7", + "D_483735587_7_7", + "D_331759900_7_7", + "D_513077276_7_7", + "D_519974530_7_7", + "D_907776050_7_7", + "D_271684775_7_7", + "D_252160589_7_7", + "D_774774759_7_7", + "D_127257956_7_7", + "D_496917282_7_7", + "D_908129316_7_7", + "D_795003496_7_7", + "D_969177591_7_7", + "D_116065851_7_7", + "D_278159347_7_7", + "D_845219872_7_7", + "CHILDSUM_7_7", + "D_640010727_8_8", + "D_236590500_8_8", + "D_718867914_8_8", + "_CONTINUE2_8_8", + "D_812370563_8_8", + "D_900939817_8_8", + "D_938150507_8_8", + "D_601211723_8_8", + "D_861788020_8_8", + "D_204425387_8_8", + "D_558929585_8_8", + "D_233764880_8_8", + "D_905145893_8_8", + "D_473190270_8_8", + "D_483735587_8_8", + "D_331759900_8_8", + "D_513077276_8_8", + "D_519974530_8_8", + "D_907776050_8_8", + "D_271684775_8_8", + "D_252160589_8_8", + "D_774774759_8_8", + "D_127257956_8_8", + "D_496917282_8_8", + "D_908129316_8_8", + "D_795003496_8_8", + "D_969177591_8_8", + "D_116065851_8_8", + "D_278159347_8_8", + "D_845219872_8_8", + "CHILDSUM_8_8", + "D_640010727_9_9", + "D_236590500_9_9", + "D_718867914_9_9", + "_CONTINUE2_9_9", + "D_812370563_9_9", + "D_900939817_9_9", + "D_938150507_9_9", + "D_601211723_9_9", + "D_861788020_9_9", + "D_204425387_9_9", + "D_558929585_9_9", + "D_233764880_9_9", + "D_905145893_9_9", + "D_473190270_9_9", + "D_483735587_9_9", + "D_331759900_9_9", + "D_513077276_9_9", + "D_519974530_9_9", + "D_907776050_9_9", + "D_271684775_9_9", + "D_252160589_9_9", + "D_774774759_9_9", + "D_127257956_9_9", + "D_496917282_9_9", + "D_908129316_9_9", + "D_795003496_9_9", + "D_969177591_9_9", + "D_116065851_9_9", + "D_278159347_9_9", + "D_845219872_9_9", + "CHILDSUM_9_9", + "D_640010727_10_10", + "D_236590500_10_10", + "D_718867914_10_10", + "_CONTINUE2_10_10", + "D_812370563_10_10", + "D_900939817_10_10", + "D_938150507_10_10", + "D_601211723_10_10", + "D_861788020_10_10", + "D_204425387_10_10", + "D_558929585_10_10", + "D_233764880_10_10", + "D_905145893_10_10", + "D_473190270_10_10", + "D_483735587_10_10", + "D_331759900_10_10", + "D_513077276_10_10", + "D_519974530_10_10", + "D_907776050_10_10", + "D_271684775_10_10", + "D_252160589_10_10", + "D_774774759_10_10", + "D_127257956_10_10", + "D_496917282_10_10", + "D_908129316_10_10", + "D_795003496_10_10", + "D_969177591_10_10", + "D_116065851_10_10", + "D_278159347_10_10", + "D_845219872_10_10", + "CHILDSUM_10_10", + "D_640010727_11_11", + "D_236590500_11_11", + "D_718867914_11_11", + "_CONTINUE2_11_11", + "D_812370563_11_11", + "D_900939817_11_11", + "D_938150507_11_11", + "D_601211723_11_11", + "D_861788020_11_11", + "D_204425387_11_11", + "D_558929585_11_11", + "D_233764880_11_11", + "D_905145893_11_11", + "D_473190270_11_11", + "D_483735587_11_11", + "D_331759900_11_11", + "D_513077276_11_11", + "D_519974530_11_11", + "D_907776050_11_11", + "D_271684775_11_11", + "D_252160589_11_11", + "D_774774759_11_11", + "D_127257956_11_11", + "D_496917282_11_11", + "D_908129316_11_11", + "D_795003496_11_11", + "D_969177591_11_11", + "D_116065851_11_11", + "D_278159347_11_11", + "D_845219872_11_11", + "CHILDSUM_11_11", + "D_640010727_12_12", + "D_236590500_12_12", + "D_718867914_12_12", + "_CONTINUE2_12_12", + "D_812370563_12_12", + "D_900939817_12_12", + "D_938150507_12_12", + "D_601211723_12_12", + "D_861788020_12_12", + "D_204425387_12_12", + "D_558929585_12_12", + "D_233764880_12_12", + "D_905145893_12_12", + "D_473190270_12_12", + "D_483735587_12_12", + "D_331759900_12_12", + "D_513077276_12_12", + "D_519974530_12_12", + "D_907776050_12_12", + "D_271684775_12_12", + "D_252160589_12_12", + "D_774774759_12_12", + "D_127257956_12_12", + "D_496917282_12_12", + "D_908129316_12_12", + "D_795003496_12_12", + "D_969177591_12_12", + "D_116065851_12_12", + "D_278159347_12_12", + "D_845219872_12_12", + "CHILDSUM_12_12", + "D_640010727_13_13", + "D_236590500_13_13", + "D_718867914_13_13", + "_CONTINUE2_13_13", + "D_812370563_13_13", + "D_900939817_13_13", + "D_938150507_13_13", + "D_601211723_13_13", + "D_861788020_13_13", + "D_204425387_13_13", + "D_558929585_13_13", + "D_233764880_13_13", + "D_905145893_13_13", + "D_473190270_13_13", + "D_483735587_13_13", + "D_331759900_13_13", + "D_513077276_13_13", + "D_519974530_13_13", + "D_907776050_13_13", + "D_271684775_13_13", + "D_252160589_13_13", + "D_774774759_13_13", + "D_127257956_13_13", + "D_496917282_13_13", + "D_908129316_13_13", + "D_795003496_13_13", + "D_969177591_13_13", + "D_116065851_13_13", + "D_278159347_13_13", + "D_845219872_13_13", + "CHILDSUM_13_13", + "D_640010727_14_14", + "D_236590500_14_14", + "D_718867914_14_14", + "_CONTINUE2_14_14", + "D_812370563_14_14", + "D_900939817_14_14", + "D_938150507_14_14", + "D_601211723_14_14", + "D_861788020_14_14", + "D_204425387_14_14", + "D_558929585_14_14", + "D_233764880_14_14", + "D_905145893_14_14", + "D_473190270_14_14", + "D_483735587_14_14", + "D_331759900_14_14", + "D_513077276_14_14", + "D_519974530_14_14", + "D_907776050_14_14", + "D_271684775_14_14", + "D_252160589_14_14", + "D_774774759_14_14", + "D_127257956_14_14", + "D_496917282_14_14", + "D_908129316_14_14", + "D_795003496_14_14", + "D_969177591_14_14", + "D_116065851_14_14", + "D_278159347_14_14", + "D_845219872_14_14", + "CHILDSUM_14_14", + "D_640010727_15_15", + "D_236590500_15_15", + "D_718867914_15_15", + "_CONTINUE2_15_15", + "D_812370563_15_15", + "D_900939817_15_15", + "D_938150507_15_15", + "D_601211723_15_15", + "D_861788020_15_15", + "D_204425387_15_15", + "D_558929585_15_15", + "D_233764880_15_15", + "D_905145893_15_15", + "D_473190270_15_15", + "D_483735587_15_15", + "D_331759900_15_15", + "D_513077276_15_15", + "D_519974530_15_15", + "D_907776050_15_15", + "D_271684775_15_15", + "D_252160589_15_15", + "D_774774759_15_15", + "D_127257956_15_15", + "D_496917282_15_15", + "D_908129316_15_15", + "D_795003496_15_15", + "D_969177591_15_15", + "D_116065851_15_15", + "D_278159347_15_15", + "D_845219872_15_15", + "CHILDSUM_15_15", + "D_640010727_16_16", + "D_236590500_16_16", + "D_718867914_16_16", + "_CONTINUE2_16_16", + "D_812370563_16_16", + "D_900939817_16_16", + "D_938150507_16_16", + "D_601211723_16_16", + "D_861788020_16_16", + "D_204425387_16_16", + "D_558929585_16_16", + "D_233764880_16_16", + "D_905145893_16_16", + "D_473190270_16_16", + "D_483735587_16_16", + "D_331759900_16_16", + "D_513077276_16_16", + "D_519974530_16_16", + "D_907776050_16_16", + "D_271684775_16_16", + "D_252160589_16_16", + "D_774774759_16_16", + "D_127257956_16_16", + "D_496917282_16_16", + "D_908129316_16_16", + "D_795003496_16_16", + "D_969177591_16_16", + "D_116065851_16_16", + "D_278159347_16_16", + "D_845219872_16_16", + "CHILDSUM_16_16", + "D_640010727_17_17", + "D_236590500_17_17", + "D_718867914_17_17", + "_CONTINUE2_17_17", + "D_812370563_17_17", + "D_900939817_17_17", + "D_938150507_17_17", + "D_601211723_17_17", + "D_861788020_17_17", + "D_204425387_17_17", + "D_558929585_17_17", + "D_233764880_17_17", + "D_905145893_17_17", + "D_473190270_17_17", + "D_483735587_17_17", + "D_331759900_17_17", + "D_513077276_17_17", + "D_519974530_17_17", + "D_907776050_17_17", + "D_271684775_17_17", + "D_252160589_17_17", + "D_774774759_17_17", + "D_127257956_17_17", + "D_496917282_17_17", + "D_908129316_17_17", + "D_795003496_17_17", + "D_969177591_17_17", + "D_116065851_17_17", + "D_278159347_17_17", + "D_845219872_17_17", + "CHILDSUM_17_17", + "D_640010727_18_18", + "D_236590500_18_18", + "D_718867914_18_18", + "_CONTINUE2_18_18", + "D_812370563_18_18", + "D_900939817_18_18", + "D_938150507_18_18", + "D_601211723_18_18", + "D_861788020_18_18", + "D_204425387_18_18", + "D_558929585_18_18", + "D_233764880_18_18", + "D_905145893_18_18", + "D_473190270_18_18", + "D_483735587_18_18", + "D_331759900_18_18", + "D_513077276_18_18", + "D_519974530_18_18", + "D_907776050_18_18", + "D_271684775_18_18", + "D_252160589_18_18", + "D_774774759_18_18", + "D_127257956_18_18", + "D_496917282_18_18", + "D_908129316_18_18", + "D_795003496_18_18", + "D_969177591_18_18", + "D_116065851_18_18", + "D_278159347_18_18", + "D_845219872_18_18", + "CHILDSUM_18_18", + "D_640010727_19_19", + "D_236590500_19_19", + "D_718867914_19_19", + "_CONTINUE2_19_19", + "D_812370563_19_19", + "D_900939817_19_19", + "D_938150507_19_19", + "D_601211723_19_19", + "D_861788020_19_19", + "D_204425387_19_19", + "D_558929585_19_19", + "D_233764880_19_19", + "D_905145893_19_19", + "D_473190270_19_19", + "D_483735587_19_19", + "D_331759900_19_19", + "D_513077276_19_19", + "D_519974530_19_19", + "D_907776050_19_19", + "D_271684775_19_19", + "D_252160589_19_19", + "D_774774759_19_19", + "D_127257956_19_19", + "D_496917282_19_19", + "D_908129316_19_19", + "D_795003496_19_19", + "D_969177591_19_19", + "D_116065851_19_19", + "D_278159347_19_19", + "D_845219872_19_19", + "CHILDSUM_19_19", + "D_640010727_20_20", + "D_236590500_20_20", + "D_718867914_20_20", + "_CONTINUE2_20_20", + "D_812370563_20_20", + "D_900939817_20_20", + "D_938150507_20_20", + "D_601211723_20_20", + "D_861788020_20_20", + "D_204425387_20_20", + "D_558929585_20_20", + "D_233764880_20_20", + "D_905145893_20_20", + "D_473190270_20_20", + "D_483735587_20_20", + "D_331759900_20_20", + "D_513077276_20_20", + "D_519974530_20_20", + "D_907776050_20_20", + "D_271684775_20_20", + "D_252160589_20_20", + "D_774774759_20_20", + "D_127257956_20_20", + "D_496917282_20_20", + "D_908129316_20_20", + "D_795003496_20_20", + "D_969177591_20_20", + "D_116065851_20_20", + "D_278159347_20_20", + "D_845219872_20_20", + "CHILDSUM_20_20", + "D_640010727_21_21", + "D_236590500_21_21", + "D_718867914_21_21", + "_CONTINUE2_21_21", + "D_812370563_21_21", + "D_900939817_21_21", + "D_938150507_21_21", + "D_601211723_21_21", + "D_861788020_21_21", + "D_204425387_21_21", + "D_558929585_21_21", + "D_233764880_21_21", + "D_905145893_21_21", + "D_473190270_21_21", + "D_483735587_21_21", + "D_331759900_21_21", + "D_513077276_21_21", + "D_519974530_21_21", + "D_907776050_21_21", + "D_271684775_21_21", + "D_252160589_21_21", + "D_774774759_21_21", + "D_127257956_21_21", + "D_496917282_21_21", + "D_908129316_21_21", + "D_795003496_21_21", + "D_969177591_21_21", + "D_116065851_21_21", + "D_278159347_21_21", + "D_845219872_21_21", + "CHILDSUM_21_21", + "D_640010727_22_22", + "D_236590500_22_22", + "D_718867914_22_22", + "_CONTINUE2_22_22", + "D_812370563_22_22", + "D_900939817_22_22", + "D_938150507_22_22", + "D_601211723_22_22", + "D_861788020_22_22", + "D_204425387_22_22", + "D_558929585_22_22", + "D_233764880_22_22", + "D_905145893_22_22", + "D_473190270_22_22", + "D_483735587_22_22", + "D_331759900_22_22", + "D_513077276_22_22", + "D_519974530_22_22", + "D_907776050_22_22", + "D_271684775_22_22", + "D_252160589_22_22", + "D_774774759_22_22", + "D_127257956_22_22", + "D_496917282_22_22", + "D_908129316_22_22", + "D_795003496_22_22", + "D_969177591_22_22", + "D_116065851_22_22", + "D_278159347_22_22", + "D_845219872_22_22", + "CHILDSUM_22_22", + "D_640010727_23_23", + "D_236590500_23_23", + "D_718867914_23_23", + "_CONTINUE2_23_23", + "D_812370563_23_23", + "D_900939817_23_23", + "D_938150507_23_23", + "D_601211723_23_23", + "D_861788020_23_23", + "D_204425387_23_23", + "D_558929585_23_23", + "D_233764880_23_23", + "D_905145893_23_23", + "D_473190270_23_23", + "D_483735587_23_23", + "D_331759900_23_23", + "D_513077276_23_23", + "D_519974530_23_23", + "D_907776050_23_23", + "D_271684775_23_23", + "D_252160589_23_23", + "D_774774759_23_23", + "D_127257956_23_23", + "D_496917282_23_23", + "D_908129316_23_23", + "D_795003496_23_23", + "D_969177591_23_23", + "D_116065851_23_23", + "D_278159347_23_23", + "D_845219872_23_23", + "CHILDSUM_23_23", + "D_640010727_24_24", + "D_236590500_24_24", + "D_718867914_24_24", + "_CONTINUE2_24_24", + "D_812370563_24_24", + "D_900939817_24_24", + "D_938150507_24_24", + "D_601211723_24_24", + "D_861788020_24_24", + "D_204425387_24_24", + "D_558929585_24_24", + "D_233764880_24_24", + "D_905145893_24_24", + "D_473190270_24_24", + "D_483735587_24_24", + "D_331759900_24_24", + "D_513077276_24_24", + "D_519974530_24_24", + "D_907776050_24_24", + "D_271684775_24_24", + "D_252160589_24_24", + "D_774774759_24_24", + "D_127257956_24_24", + "D_496917282_24_24", + "D_908129316_24_24", + "D_795003496_24_24", + "D_969177591_24_24", + "D_116065851_24_24", + "D_278159347_24_24", + "D_845219872_24_24", + "CHILDSUM_24_24", + "D_640010727_25_25", + "D_236590500_25_25", + "D_718867914_25_25", + "_CONTINUE2_25_25", + "D_812370563_25_25", + "D_900939817_25_25", + "D_938150507_25_25", + "D_601211723_25_25", + "D_861788020_25_25", + "D_204425387_25_25", + "D_558929585_25_25", + "D_233764880_25_25", + "D_905145893_25_25", + "D_473190270_25_25", + "D_483735587_25_25", + "D_331759900_25_25", + "D_513077276_25_25", + "D_519974530_25_25", + "D_907776050_25_25", + "D_271684775_25_25", + "D_252160589_25_25", + "D_774774759_25_25", + "D_127257956_25_25", + "D_496917282_25_25", + "D_908129316_25_25", + "D_795003496_25_25", + "D_969177591_25_25", + "D_116065851_25_25", + "D_278159347_25_25", + "D_845219872_25_25", + "CHILDSUM_25_25", + "D_627122657", + "D_114529380", + "D_403258164", + "D_118061122", + "D_759004335" + ], + "byKind": { + "default": 128, + "no-response": 67, + "response": 1690 + }, + "byResolution": { + "exact": 1735, + "virtual-loop": 150 + }, + "triggerTypes": { + "checkbox": 1377, + "hidden": 195, + "radio": 313 + }, + "triggerValues": [ + "583826374", + "636411467", + "458435048", + "706998638", + "973565052", + "586825330", + "412790539", + "104430631", + "353358909", + "698944820", + "838744325", + "769790179", + "699553344", + "700811160", + "336505365", + "132548932", + "747787163", + "693851465", + "512012656", + "619337095", + "359025642", + "407340134", + "427219143", + "406890409", + "704544306", + "691766591", + "308645635", + "731115613", + "567284980", + "986548173", + "285995100", + "545628561", + "709786039", + "984479578", + "726539692", + "158044532", + "943054522", + "827542780", + "167238688", + "636030086", + "239687183", + "134592375", + "164910211", + "796616844", + "436689514", + "296357383", + "901077233", + "136956596", + "455776698", + "155874194", + "880962432", + "691450854", + "509721537", + "863286658", + "386524148", + "937208760", + "746542057", + "797189152", + "633546100", + "866002271", + "209101810", + "413734739", + "215525943", + "118789503", + "715563991", + "533491176", + "220755749", + "465318416", + "630100221", + "692881833", + "654450030", + "532603425", + "733236542", + "961987554", + "113771607", + "668256654", + "752953170", + "325506683", + "335563082", + "955881350", + "492902023", + "256196714", + "802859122", + "520432394", + "667901971", + "807835037", + "535003378", + "178420302", + "939782495", + "135725957", + "518416174", + "847945207", + "283025574", + "942970912", + "596122041", + "489400183", + "863246236", + "607793249", + "532172400", + "754745617", + "665036297", + "200837530", + "990319383", + "487917585", + "603181162", + "482225200", + "764891959", + "139822395", + "723614811", + "295976386", + "248374037" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_384191091,583826374)", + "equals(D_384191091,636411467)", + "equals(D_384191091,458435048)", + "equals(D_384191091,706998638)", + "equals(D_384191091,973565052)", + "equals(D_384191091,586825330)", + "equals(D_384191091,412790539)", + "equals(D_407056417,536341288)", + "equals(D_167101091,698944820)", + "equals(D_167101091,838744325)", + "equals(D_167101091,769790179)", + "equals(D_167101091,699553344)", + "equals(D_167101091,700811160)", + "equals(D_167101091,336505365)", + "equals(D_167101091,132548932)", + "equals(D_167101091,747787163)", + "equals(D_167101091,693851465)", + "equals(D_167101091,512012656)", + "equals(D_167101091,619337095)", + "equals(D_894259747,359025642)", + "equals(D_894259747,407340134)", + "equals(D_894259747,427219143)", + "equals(D_180961306,406890409)", + "equals(D_180961306,704544306)", + "equals(D_180961306,691766591)", + "equals(D_180961306,308645635)", + "equals(D_180961306,731115613)", + "equals(D_180961306,567284980)", + "equals(D_180961306,986548173)", + "equals(D_180961306,285995100)", + "equals(D_180961306,545628561)", + "equals(D_180961306,709786039)", + "equals(D_180961306,984479578)", + "equals(D_900541533,726539692)", + "equals(D_900541533,158044532)", + "equals(D_900541533,943054522)", + "equals(D_874046190,827542780)", + "equals(D_874046190,167238688)", + "equals(D_543728565,636030086)", + "equals(D_543728565,239687183)", + "equals(D_543728565,134592375)", + "equals(D_874709643,164910211)", + "equals(D_874709643,796616844)", + "equals(D_874709643,436689514)", + "equals(D_874709643,296357383)", + "equals(D_874709643,901077233)", + "equals(D_874709643,136956596)", + "equals(D_874709643,455776698)", + "equals(D_874709643,155874194)", + "equals(D_874709643,880962432)", + "equals(D_874709643,691450854)", + "equals(D_750420077,578416151)", + "equals(D_750420077,434651539)", + "equals(D_750420077,700100953)", + "equals(D_725626004,509721537)", + "equals(D_725626004,863286658)", + "equals(D_725626004,386524148)", + "equals(D_725626004,937208760)", + "equals(D_725626004,746542057)", + "equals(D_725626004,854945381)", + "equals(D_750420077,108025529)", + "and(equals(D_750420077,582784267),equals(D_750420077,751402477))", + "equals(D_750420077,751402477)", + "equals(D_750420077,582784267)", + "equals(D_624179836,797189152)", + "equals(D_624179836,633546100)", + "equals(D_624179836,866002271)", + "equals(D_624179836,209101810)", + "equals(D_624179836,413734739)", + "equals(D_624179836,215525943)", + "equals(D_624179836,118789503)", + "equals(D_624179836,715563991)", + "equals(D_624179836,533491176)", + "equals(D_517307064,752953170)", + "equals(D_517307064,325506683)", + "equals(D_517307064,335563082)", + "equals(D_517307064,955881350)", + "equals(D_517307064,492902023)", + "equals(D_517307064,256196714)", + "equals(D_517307064,802859122)", + "equals(D_517307064,520432394)", + "equals(D_517307064,667901971)", + "equals(D_517307064,807835037)", + "exists('D_942347130')", + "doesNotExist('D_942347130')", + "equals(D_624179836,220755749)", + "equals(D_624179836,465318416)", + "equals(D_624179836,630100221)", + "and(equals(D_624179836,630100221),or(equals(D_378892977,109972911),equals(D_378892977,333647143)))", + "equals(D_624179836,692881833)", + "and(equals(D_624179836,692881833),or(equals(D_224791140,537173119),equals(D_224791140,448068764)))", + "equals(D_624179836,654450030)", + "equals(D_624179836,532603425)", + "and(equals(D_624179836,532603425),or(equals(D_946504570,970716952),equals(D_946504570,770550588)))", + "equals(D_624179836,733236542)", + "and(equals(D_624179836,733236542),or(equals(D_107060069,500023550),equals(D_107060069,524029283)))", + "equals(D_624179836,961987554)", + "greaterThanOrEqual(D_795940097,1)", + "greaterThan(D_795940097,1)", + "_value('age') >= 18", + "(_value('age') >= 18)", + "_value('age') >=18", + "_value('age') >= 25", + "(_value('age') >= 25)", + "_value('age') >=25", + "_value('age') >= 35", + "(_value('age') >= 35)", + "_value('age') >=35", + "_value('age') >= 45", + "(_value('age') >= 45)", + "_value('age') >=45", + "_value('age') >= 55", + "(_value('age') >= 55)", + "_value('age') >=55", + "greaterThanOrEqual(percentDiff(D_821387277,D_121646540),.05)", + "greaterThanOrEqual(percentDiff(D_121646540,D_950080618),.05)", + "greaterThanOrEqual(percentDiff(D_950080618,D_407167089),.05)", + "greaterThanOrEqual(percentDiff(D_407167089,D_503154158),.05)", + "_value(\"age\") >= 40", + "valueIsOneOf(\"D_407056417\",536341288) and _value(\"age\") >= 40", + "valueIsOneOf(\"D_407056417\",654207589) and _value(\"age\") >= 40", + "equals(D_170440011,353358909)", + "doesNotEqual(D_170440011,353358909)", + "equals(D_814510313,939782495)", + "equals(D_814510313,135725957)", + "equals(D_814510313,518416174)", + "equals(D_814510313,847945207)", + "equals(D_814510313,283025574)", + "equals(D_814510313,942970912)", + "equals(D_814510313,596122041)", + "equals(D_814510313,489400183)", + "equals(D_814510313,863246236)", + "equals(D_814510313,607793249)", + "equals(D_814510313,532172400)", + "equals(D_814510313,754745617)", + "equals(D_814510313,665036297)", + "equals(D_814510313,200837530)", + "equals(D_814510313,990319383)", + "equals(D_814510313,487917585)", + "equals(D_814510313,603181162)", + "equals(D_814510313,482225200)", + "equals(D_814510313,764891959)", + "equals(D_814510313,139822395)", + "equals(D_814510313,723614811)", + "valueIsOneOf(\"D_814510313\",807835037) or valueLength(\"D_677702321\")>0", + "valueLength('D_677702321')>0", + "doesNotExist('D_677702321')", + "equals(D_814510313,178420302)", + "equals(D_367374606,353358909)", + "doesNotEqual(D_367374606,353358909)", + "equals(D_173240848,939782495)", + "equals(D_173240848,135725957)", + "equals(D_173240848,518416174)", + "equals(D_173240848,847945207)", + "equals(D_173240848,942970912)", + "equals(D_173240848,596122041)", + "equals(D_173240848,489400183)", + "equals(D_173240848,863246236)", + "equals(D_173240848,607793249)", + "equals(D_173240848,532172400)", + "equals(D_173240848,754745617)", + "equals(D_173240848,665036297)", + "equals(D_173240848,200837530)", + "equals(D_173240848,990319383)", + "equals(D_173240848,487917585)", + "equals(D_173240848,482225200)", + "equals(D_173240848,295976386)", + "equals(D_173240848,764891959)", + "equals(D_173240848,248374037)", + "equals(D_173240848,139822395)", + "valueIsOneOf(\"D_173240848\",807835037) or valueLength(\"D_195093589\")>0", + "valueLength('D_195093589')>0", + "doesNotExist('D_195093589')", + "equals(D_173240848,178420302)", + "isNotDefined(D_694265648,0)", + "or(equals(D_694265648,0),or(isNotDefined(D_694265648,0),greaterThanOrEqual(D_694265648,2)))", + "1==1", + "1>1", + "equals(isNotDefined(D_406098499_1_1,false),false)", + "doesNotEqual(isNotDefined(D_406098499_1_1,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_1_1,false),false),greaterThan(1,1))", + "valueIsOneOf(\"D_992987417\",353358909,288105839,626558982)", + "equals(D_579563781_1_1,654207589)", + "equals(D_579563781_1_1,536341288)", + "and(doesNotEqual(D_579563781_1_1,654207589),doesNotEqual(D_579563781_1_1,536341288))", + "equals(D_890637099_1_1,353358909)", + "doesNotEqual(D_890637099_1_1,353358909)", + "equals(D_578895128_1_1,939782495)", + "equals(D_578895128_1_1,135725957)", + "equals(D_578895128_1_1,518416174)", + "equals(D_578895128_1_1,847945207)", + "equals(D_578895128_1_1,283025574)", + "equals(D_578895128_1_1,942970912)", + "equals(D_578895128_1_1,596122041)", + "equals(D_578895128_1_1,489400183)", + "equals(D_578895128_1_1,863246236)", + "equals(D_578895128_1_1,607793249)", + "equals(D_578895128_1_1,532172400)", + "equals(D_578895128_1_1,754745617)", + "equals(D_578895128_1_1,665036297)", + "equals(D_578895128_1_1,200837530)", + "equals(D_578895128_1_1,990319383)", + "equals(D_578895128_1_1,487917585)", + "equals(D_578895128_1_1,603181162)", + "equals(D_578895128_1_1,482225200)", + "equals(D_578895128_1_1,295976386)", + "equals(D_578895128_1_1,764891959)", + "equals(D_578895128_1_1,248374037)", + "equals(D_578895128_1_1,139822395)", + "equals(D_578895128_1_1,723614811)", + "exists('D_957429734_1_1')", + "doesNotExist('D_957429734_1_1')", + "selectionCount(\"D_578895128_1_1\",true)>0 or valueLength(\"D_957429734_1_1\")>0", + "valueLength('D_406098499_1_1')>0", + "equals(D_579563781_1_1,178420302)", + "allExist('D_807431780_1_1','D_578895128_1_1')", + "equals(D_807431780_1_1,353358909)", + "equals(D_807431780_1_1,104430631)", + "valueIsOneOf('D_589588769_1_1',555374628)", + "valueIsOneOf('D_589588769_1_1',871673221)", + "valueIsOneOf('D_589588769_1_1',198654048)", + "valueIsOneOf('D_807431780_1_1',353358909)", + "equals(D_607773106_1_1,104430631)", + "equals(D_607773106_1_1,353358909)", + "equals(D_607773106_1_1,178420302)", + "2==1", + "2>1", + "equals(isNotDefined(D_406098499_2_2,false),false)", + "doesNotEqual(isNotDefined(D_406098499_2_2,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_2_2,false),false),greaterThan(2,1))", + "equals(D_579563781_2_2,654207589)", + "equals(D_579563781_2_2,536341288)", + "and(doesNotEqual(D_579563781_2_2,654207589),doesNotEqual(D_579563781_2_2,536341288))", + "equals(D_890637099_2_2,353358909)", + "doesNotEqual(D_890637099_2_2,353358909)", + "equals(D_578895128_2_2,939782495)", + "equals(D_578895128_2_2,135725957)", + "equals(D_578895128_2_2,518416174)", + "equals(D_578895128_2_2,847945207)", + "equals(D_578895128_2_2,283025574)", + "equals(D_578895128_2_2,942970912)", + "equals(D_578895128_2_2,596122041)", + "equals(D_578895128_2_2,489400183)", + "equals(D_578895128_2_2,863246236)", + "equals(D_578895128_2_2,607793249)", + "equals(D_578895128_2_2,532172400)", + "equals(D_578895128_2_2,754745617)", + "equals(D_578895128_2_2,665036297)", + "equals(D_578895128_2_2,200837530)", + "equals(D_578895128_2_2,990319383)", + "equals(D_578895128_2_2,487917585)", + "equals(D_578895128_2_2,603181162)", + "equals(D_578895128_2_2,482225200)", + "equals(D_578895128_2_2,295976386)", + "equals(D_578895128_2_2,764891959)", + "equals(D_578895128_2_2,248374037)", + "equals(D_578895128_2_2,139822395)", + "equals(D_578895128_2_2,723614811)", + "exists('D_957429734_2_2')", + "doesNotExist('D_957429734_2_2')", + "selectionCount(\"D_578895128_2_2\",true)>0 or valueLength(\"D_957429734_2_2\")>0", + "valueLength('D_406098499_2_2')>0", + "equals(D_579563781_2_2,178420302)", + "allExist('D_807431780_2_2','D_578895128_2_2')", + "equals(D_807431780_2_2,353358909)", + "equals(D_807431780_2_2,104430631)", + "valueIsOneOf('D_589588769_2_2',555374628)", + "valueIsOneOf('D_589588769_2_2',871673221)", + "valueIsOneOf('D_589588769_2_2',198654048)", + "valueIsOneOf('D_807431780_2_2',353358909)", + "equals(D_607773106_2_2,104430631)", + "equals(D_607773106_2_2,353358909)", + "equals(D_607773106_2_2,178420302)", + "3==1", + "3>1", + "equals(isNotDefined(D_406098499_3_3,false),false)", + "doesNotEqual(isNotDefined(D_406098499_3_3,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_3_3,false),false),greaterThan(3,1))", + "equals(D_579563781_3_3,654207589)", + "equals(D_579563781_3_3,536341288)", + "and(doesNotEqual(D_579563781_3_3,654207589),doesNotEqual(D_579563781_3_3,536341288))", + "equals(D_890637099_3_3,353358909)", + "doesNotEqual(D_890637099_3_3,353358909)", + "equals(D_578895128_3_3,939782495)", + "equals(D_578895128_3_3,135725957)", + "equals(D_578895128_3_3,518416174)", + "equals(D_578895128_3_3,847945207)", + "equals(D_578895128_3_3,283025574)", + "equals(D_578895128_3_3,942970912)", + "equals(D_578895128_3_3,596122041)", + "equals(D_578895128_3_3,489400183)", + "equals(D_578895128_3_3,863246236)", + "equals(D_578895128_3_3,607793249)", + "equals(D_578895128_3_3,532172400)", + "equals(D_578895128_3_3,754745617)", + "equals(D_578895128_3_3,665036297)", + "equals(D_578895128_3_3,200837530)", + "equals(D_578895128_3_3,990319383)", + "equals(D_578895128_3_3,487917585)", + "equals(D_578895128_3_3,603181162)", + "equals(D_578895128_3_3,482225200)", + "equals(D_578895128_3_3,295976386)", + "equals(D_578895128_3_3,764891959)", + "equals(D_578895128_3_3,248374037)", + "equals(D_578895128_3_3,139822395)", + "equals(D_578895128_3_3,723614811)", + "exists('D_957429734_3_3')", + "doesNotExist('D_957429734_3_3')", + "selectionCount(\"D_578895128_3_3\",true)>0 or valueLength(\"D_957429734_3_3\")>0", + "valueLength('D_406098499_3_3')>0", + "equals(D_579563781_3_3,178420302)", + "allExist('D_807431780_3_3','D_578895128_3_3')", + "equals(D_807431780_3_3,353358909)", + "equals(D_807431780_3_3,104430631)", + "valueIsOneOf('D_589588769_3_3',555374628)", + "valueIsOneOf('D_589588769_3_3',871673221)", + "valueIsOneOf('D_589588769_3_3',198654048)", + "valueIsOneOf('D_807431780_3_3',353358909)", + "equals(D_607773106_3_3,104430631)", + "equals(D_607773106_3_3,353358909)", + "equals(D_607773106_3_3,178420302)", + "4==1", + "4>1", + "equals(isNotDefined(D_406098499_4_4,false),false)", + "doesNotEqual(isNotDefined(D_406098499_4_4,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_4_4,false),false),greaterThan(4,1))", + "equals(D_579563781_4_4,654207589)", + "equals(D_579563781_4_4,536341288)", + "and(doesNotEqual(D_579563781_4_4,654207589),doesNotEqual(D_579563781_4_4,536341288))", + "equals(D_890637099_4_4,353358909)", + "doesNotEqual(D_890637099_4_4,353358909)", + "equals(D_578895128_4_4,939782495)", + "equals(D_578895128_4_4,135725957)", + "equals(D_578895128_4_4,518416174)", + "equals(D_578895128_4_4,847945207)", + "equals(D_578895128_4_4,283025574)", + "equals(D_578895128_4_4,942970912)", + "equals(D_578895128_4_4,596122041)", + "equals(D_578895128_4_4,489400183)", + "equals(D_578895128_4_4,863246236)", + "equals(D_578895128_4_4,607793249)", + "equals(D_578895128_4_4,532172400)", + "equals(D_578895128_4_4,754745617)", + "equals(D_578895128_4_4,665036297)", + "equals(D_578895128_4_4,200837530)", + "equals(D_578895128_4_4,990319383)", + "equals(D_578895128_4_4,487917585)", + "equals(D_578895128_4_4,603181162)", + "equals(D_578895128_4_4,482225200)", + "equals(D_578895128_4_4,295976386)", + "equals(D_578895128_4_4,764891959)", + "equals(D_578895128_4_4,248374037)", + "equals(D_578895128_4_4,139822395)", + "equals(D_578895128_4_4,723614811)", + "exists('D_957429734_4_4')", + "doesNotExist('D_957429734_4_4')", + "selectionCount(\"D_578895128_4_4\",true)>0 or valueLength(\"D_957429734_4_4\")>0", + "valueLength('D_406098499_4_4')>0", + "equals(D_579563781_4_4,178420302)", + "allExist('D_807431780_4_4','D_578895128_4_4')", + "equals(D_807431780_4_4,353358909)", + "equals(D_807431780_4_4,104430631)", + "valueIsOneOf('D_589588769_4_4',555374628)", + "valueIsOneOf('D_589588769_4_4',871673221)", + "valueIsOneOf('D_589588769_4_4',198654048)", + "valueIsOneOf('D_807431780_4_4',353358909)", + "equals(D_607773106_4_4,104430631)", + "equals(D_607773106_4_4,353358909)", + "equals(D_607773106_4_4,178420302)", + "5==1", + "5>1", + "equals(isNotDefined(D_406098499_5_5,false),false)", + "doesNotEqual(isNotDefined(D_406098499_5_5,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_5_5,false),false),greaterThan(5,1))", + "equals(D_579563781_5_5,654207589)", + "equals(D_579563781_5_5,536341288)", + "and(doesNotEqual(D_579563781_5_5,654207589),doesNotEqual(D_579563781_5_5,536341288))", + "equals(D_890637099_5_5,353358909)", + "doesNotEqual(D_890637099_5_5,353358909)", + "equals(D_578895128_5_5,939782495)", + "equals(D_578895128_5_5,135725957)", + "equals(D_578895128_5_5,518416174)", + "equals(D_578895128_5_5,847945207)", + "equals(D_578895128_5_5,283025574)", + "equals(D_578895128_5_5,942970912)", + "equals(D_578895128_5_5,596122041)", + "equals(D_578895128_5_5,489400183)", + "equals(D_578895128_5_5,863246236)", + "equals(D_578895128_5_5,607793249)", + "equals(D_578895128_5_5,532172400)", + "equals(D_578895128_5_5,754745617)", + "equals(D_578895128_5_5,665036297)", + "equals(D_578895128_5_5,200837530)", + "equals(D_578895128_5_5,990319383)", + "equals(D_578895128_5_5,487917585)", + "equals(D_578895128_5_5,603181162)", + "equals(D_578895128_5_5,482225200)", + "equals(D_578895128_5_5,295976386)", + "equals(D_578895128_5_5,764891959)", + "equals(D_578895128_5_5,248374037)", + "equals(D_578895128_5_5,139822395)", + "equals(D_578895128_5_5,723614811)", + "exists('D_957429734_5_5')", + "doesNotExist('D_957429734_5_5')", + "selectionCount(\"D_578895128_5_5\",true)>0 or valueLength(\"D_957429734_5_5\")>0", + "valueLength('D_406098499_5_5')>0", + "equals(D_579563781_5_5,178420302)", + "allExist('D_807431780_5_5','D_578895128_5_5')", + "equals(D_807431780_5_5,353358909)", + "equals(D_807431780_5_5,104430631)", + "valueIsOneOf('D_589588769_5_5',555374628)", + "valueIsOneOf('D_589588769_5_5',871673221)", + "valueIsOneOf('D_589588769_5_5',198654048)", + "valueIsOneOf('D_807431780_5_5',353358909)", + "equals(D_607773106_5_5,104430631)", + "equals(D_607773106_5_5,353358909)", + "equals(D_607773106_5_5,178420302)", + "6==1", + "6>1", + "equals(isNotDefined(D_406098499_6_6,false),false)", + "doesNotEqual(isNotDefined(D_406098499_6_6,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_6_6,false),false),greaterThan(6,1))", + "equals(D_579563781_6_6,654207589)", + "equals(D_579563781_6_6,536341288)", + "and(doesNotEqual(D_579563781_6_6,654207589),doesNotEqual(D_579563781_6_6,536341288))", + "equals(D_890637099_6_6,353358909)", + "doesNotEqual(D_890637099_6_6,353358909)", + "equals(D_578895128_6_6,939782495)", + "equals(D_578895128_6_6,135725957)", + "equals(D_578895128_6_6,518416174)", + "equals(D_578895128_6_6,847945207)", + "equals(D_578895128_6_6,283025574)", + "equals(D_578895128_6_6,942970912)", + "equals(D_578895128_6_6,596122041)", + "equals(D_578895128_6_6,489400183)", + "equals(D_578895128_6_6,863246236)", + "equals(D_578895128_6_6,607793249)", + "equals(D_578895128_6_6,532172400)", + "equals(D_578895128_6_6,754745617)", + "equals(D_578895128_6_6,665036297)", + "equals(D_578895128_6_6,200837530)", + "equals(D_578895128_6_6,990319383)", + "equals(D_578895128_6_6,487917585)", + "equals(D_578895128_6_6,603181162)", + "equals(D_578895128_6_6,482225200)", + "equals(D_578895128_6_6,295976386)", + "equals(D_578895128_6_6,764891959)", + "equals(D_578895128_6_6,248374037)", + "equals(D_578895128_6_6,139822395)", + "equals(D_578895128_6_6,723614811)", + "exists('D_957429734_6_6')", + "doesNotExist('D_957429734_6_6')", + "selectionCount(\"D_578895128_6_6\",true)>0 or valueLength(\"D_957429734_6_6\")>0", + "valueLength('D_406098499_6_6')>0", + "equals(D_579563781_6_6,178420302)", + "allExist('D_807431780_6_6','D_578895128_6_6')", + "equals(D_807431780_6_6,353358909)", + "equals(D_807431780_6_6,104430631)", + "valueIsOneOf('D_589588769_6_6',555374628)", + "valueIsOneOf('D_589588769_6_6',871673221)", + "valueIsOneOf('D_589588769_6_6',198654048)", + "valueIsOneOf('D_807431780_6_6',353358909)", + "equals(D_607773106_6_6,104430631)", + "equals(D_607773106_6_6,353358909)", + "equals(D_607773106_6_6,178420302)", + "7==1", + "7>1", + "equals(isNotDefined(D_406098499_7_7,false),false)", + "doesNotEqual(isNotDefined(D_406098499_7_7,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_7_7,false),false),greaterThan(7,1))", + "equals(D_579563781_7_7,654207589)", + "equals(D_579563781_7_7,536341288)", + "and(doesNotEqual(D_579563781_7_7,654207589),doesNotEqual(D_579563781_7_7,536341288))", + "equals(D_890637099_7_7,353358909)", + "doesNotEqual(D_890637099_7_7,353358909)", + "equals(D_578895128_7_7,939782495)", + "equals(D_578895128_7_7,135725957)", + "equals(D_578895128_7_7,518416174)", + "equals(D_578895128_7_7,847945207)", + "equals(D_578895128_7_7,283025574)", + "equals(D_578895128_7_7,942970912)", + "equals(D_578895128_7_7,596122041)", + "equals(D_578895128_7_7,489400183)", + "equals(D_578895128_7_7,863246236)", + "equals(D_578895128_7_7,607793249)", + "equals(D_578895128_7_7,532172400)", + "equals(D_578895128_7_7,754745617)", + "equals(D_578895128_7_7,665036297)", + "equals(D_578895128_7_7,200837530)", + "equals(D_578895128_7_7,990319383)", + "equals(D_578895128_7_7,487917585)", + "equals(D_578895128_7_7,603181162)", + "equals(D_578895128_7_7,482225200)", + "equals(D_578895128_7_7,295976386)", + "equals(D_578895128_7_7,764891959)", + "equals(D_578895128_7_7,248374037)", + "equals(D_578895128_7_7,139822395)", + "equals(D_578895128_7_7,723614811)", + "exists('D_957429734_7_7')", + "doesNotExist('D_957429734_7_7')", + "selectionCount(\"D_578895128_7_7\",true)>0 or valueLength(\"D_957429734_7_7\")>0", + "valueLength('D_406098499_7_7')>0", + "equals(D_579563781_7_7,178420302)", + "allExist('D_807431780_7_7','D_578895128_7_7')", + "equals(D_807431780_7_7,353358909)", + "equals(D_807431780_7_7,104430631)", + "valueIsOneOf('D_589588769_7_7',555374628)", + "valueIsOneOf('D_589588769_7_7',871673221)", + "valueIsOneOf('D_589588769_7_7',198654048)", + "valueIsOneOf('D_807431780_7_7',353358909)", + "equals(D_607773106_7_7,104430631)", + "equals(D_607773106_7_7,353358909)", + "equals(D_607773106_7_7,178420302)", + "8==1", + "8>1", + "equals(isNotDefined(D_406098499_8_8,false),false)", + "doesNotEqual(isNotDefined(D_406098499_8_8,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_8_8,false),false),greaterThan(8,1))", + "equals(D_579563781_8_8,654207589)", + "equals(D_579563781_8_8,536341288)", + "and(doesNotEqual(D_579563781_8_8,654207589),doesNotEqual(D_579563781_8_8,536341288))", + "equals(D_890637099_8_8,353358909)", + "doesNotEqual(D_890637099_8_8,353358909)", + "equals(D_578895128_8_8,939782495)", + "equals(D_578895128_8_8,135725957)", + "equals(D_578895128_8_8,518416174)", + "equals(D_578895128_8_8,847945207)", + "equals(D_578895128_8_8,283025574)", + "equals(D_578895128_8_8,942970912)", + "equals(D_578895128_8_8,596122041)", + "equals(D_578895128_8_8,489400183)", + "equals(D_578895128_8_8,863246236)", + "equals(D_578895128_8_8,607793249)", + "equals(D_578895128_8_8,532172400)", + "equals(D_578895128_8_8,754745617)", + "equals(D_578895128_8_8,665036297)", + "equals(D_578895128_8_8,200837530)", + "equals(D_578895128_8_8,990319383)", + "equals(D_578895128_8_8,487917585)", + "equals(D_578895128_8_8,603181162)", + "equals(D_578895128_8_8,482225200)", + "equals(D_578895128_8_8,295976386)", + "equals(D_578895128_8_8,764891959)", + "equals(D_578895128_8_8,248374037)", + "equals(D_578895128_8_8,139822395)", + "equals(D_578895128_8_8,723614811)", + "exists('D_957429734_8_8')", + "doesNotExist('D_957429734_8_8')", + "selectionCount(\"D_578895128_8_8\",true)>0 or valueLength(\"D_957429734_8_8\")>0", + "valueLength('D_406098499_8_8')>0", + "equals(D_579563781_8_8,178420302)", + "allExist('D_807431780_8_8','D_578895128_8_8')", + "equals(D_807431780_8_8,353358909)", + "equals(D_807431780_8_8,104430631)", + "valueIsOneOf('D_589588769_8_8',555374628)", + "valueIsOneOf('D_589588769_8_8',871673221)", + "valueIsOneOf('D_589588769_8_8',198654048)", + "valueIsOneOf('D_807431780_8_8',353358909)", + "equals(D_607773106_8_8,104430631)", + "equals(D_607773106_8_8,353358909)", + "equals(D_607773106_8_8,178420302)", + "9==1", + "9>1", + "equals(isNotDefined(D_406098499_9_9,false),false)", + "doesNotEqual(isNotDefined(D_406098499_9_9,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_9_9,false),false),greaterThan(9,1))", + "equals(D_579563781_9_9,654207589)", + "equals(D_579563781_9_9,536341288)", + "and(doesNotEqual(D_579563781_9_9,654207589),doesNotEqual(D_579563781_9_9,536341288))", + "equals(D_890637099_9_9,353358909)", + "doesNotEqual(D_890637099_9_9,353358909)", + "equals(D_578895128_9_9,939782495)", + "equals(D_578895128_9_9,135725957)", + "equals(D_578895128_9_9,518416174)", + "equals(D_578895128_9_9,847945207)", + "equals(D_578895128_9_9,283025574)", + "equals(D_578895128_9_9,942970912)", + "equals(D_578895128_9_9,596122041)", + "equals(D_578895128_9_9,489400183)", + "equals(D_578895128_9_9,863246236)", + "equals(D_578895128_9_9,607793249)", + "equals(D_578895128_9_9,532172400)", + "equals(D_578895128_9_9,754745617)", + "equals(D_578895128_9_9,665036297)", + "equals(D_578895128_9_9,200837530)", + "equals(D_578895128_9_9,990319383)", + "equals(D_578895128_9_9,487917585)", + "equals(D_578895128_9_9,603181162)", + "equals(D_578895128_9_9,482225200)", + "equals(D_578895128_9_9,295976386)", + "equals(D_578895128_9_9,764891959)", + "equals(D_578895128_9_9,248374037)", + "equals(D_578895128_9_9,139822395)", + "equals(D_578895128_9_9,723614811)", + "exists('D_957429734_9_9')", + "doesNotExist('D_957429734_9_9')", + "selectionCount(\"D_578895128_9_9\",true)>0 or valueLength(\"D_957429734_9_9\")>0", + "valueLength('D_406098499_9_9')>0", + "equals(D_579563781_9_9,178420302)", + "allExist('D_807431780_9_9','D_578895128_9_9')", + "equals(D_807431780_9_9,353358909)", + "equals(D_807431780_9_9,104430631)", + "valueIsOneOf('D_589588769_9_9',555374628)", + "valueIsOneOf('D_589588769_9_9',871673221)", + "valueIsOneOf('D_589588769_9_9',198654048)", + "valueIsOneOf('D_807431780_9_9',353358909)", + "equals(D_607773106_9_9,104430631)", + "equals(D_607773106_9_9,353358909)", + "equals(D_607773106_9_9,178420302)", + "10==1", + "10>1", + "equals(isNotDefined(D_406098499_10_10,false),false)", + "doesNotEqual(isNotDefined(D_406098499_10_10,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_10_10,false),false),greaterThan(10,1))", + "equals(D_579563781_10_10,654207589)", + "equals(D_579563781_10_10,536341288)", + "and(doesNotEqual(D_579563781_10_10,654207589),doesNotEqual(D_579563781_10_10,536341288))", + "equals(D_890637099_10_10,353358909)", + "doesNotEqual(D_890637099_10_10,353358909)", + "equals(D_578895128_10_10,939782495)", + "equals(D_578895128_10_10,135725957)", + "equals(D_578895128_10_10,518416174)", + "equals(D_578895128_10_10,847945207)", + "equals(D_578895128_10_10,283025574)", + "equals(D_578895128_10_10,942970912)", + "equals(D_578895128_10_10,596122041)", + "equals(D_578895128_10_10,489400183)", + "equals(D_578895128_10_10,863246236)", + "equals(D_578895128_10_10,607793249)", + "equals(D_578895128_10_10,532172400)", + "equals(D_578895128_10_10,754745617)", + "equals(D_578895128_10_10,665036297)", + "equals(D_578895128_10_10,200837530)", + "equals(D_578895128_10_10,990319383)", + "equals(D_578895128_10_10,487917585)", + "equals(D_578895128_10_10,603181162)", + "equals(D_578895128_10_10,482225200)", + "equals(D_578895128_10_10,295976386)", + "equals(D_578895128_10_10,764891959)", + "equals(D_578895128_10_10,248374037)", + "equals(D_578895128_10_10,139822395)", + "equals(D_578895128_10_10,723614811)", + "exists('D_957429734_10_10')", + "doesNotExist('D_957429734_10_10')", + "selectionCount(\"D_578895128_10_10\",true)>0 or valueLength(\"D_957429734_10_10\")>0", + "valueLength('D_406098499_10_10')>0", + "equals(D_579563781_10_10,178420302)", + "allExist('D_807431780_10_10','D_578895128_10_10')", + "equals(D_807431780_10_10,353358909)", + "equals(D_807431780_10_10,104430631)", + "valueIsOneOf('D_589588769_10_10',555374628)", + "valueIsOneOf('D_589588769_10_10',871673221)", + "valueIsOneOf('D_589588769_10_10',198654048)", + "valueIsOneOf('D_807431780_10_10',353358909)", + "equals(D_607773106_10_10,104430631)", + "equals(D_607773106_10_10,353358909)", + "equals(D_607773106_10_10,178420302)", + "11==1", + "11>1", + "equals(isNotDefined(D_406098499_11_11,false),false)", + "doesNotEqual(isNotDefined(D_406098499_11_11,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_11_11,false),false),greaterThan(11,1))", + "equals(D_579563781_11_11,654207589)", + "equals(D_579563781_11_11,536341288)", + "and(doesNotEqual(D_579563781_11_11,654207589),doesNotEqual(D_579563781_11_11,536341288))", + "equals(D_890637099_11_11,353358909)", + "doesNotEqual(D_890637099_11_11,353358909)", + "equals(D_578895128_11_11,939782495)", + "equals(D_578895128_11_11,135725957)", + "equals(D_578895128_11_11,518416174)", + "equals(D_578895128_11_11,847945207)", + "equals(D_578895128_11_11,283025574)", + "equals(D_578895128_11_11,942970912)", + "equals(D_578895128_11_11,596122041)", + "equals(D_578895128_11_11,489400183)", + "equals(D_578895128_11_11,863246236)", + "equals(D_578895128_11_11,607793249)", + "equals(D_578895128_11_11,532172400)", + "equals(D_578895128_11_11,754745617)", + "equals(D_578895128_11_11,665036297)", + "equals(D_578895128_11_11,200837530)", + "equals(D_578895128_11_11,990319383)", + "equals(D_578895128_11_11,487917585)", + "equals(D_578895128_11_11,603181162)", + "equals(D_578895128_11_11,482225200)", + "equals(D_578895128_11_11,295976386)", + "equals(D_578895128_11_11,764891959)", + "equals(D_578895128_11_11,248374037)", + "equals(D_578895128_11_11,139822395)", + "equals(D_578895128_11_11,723614811)", + "exists('D_957429734_11_11')", + "doesNotExist('D_957429734_11_11')", + "selectionCount(\"D_578895128_11_11\",true)>0 or valueLength(\"D_957429734_11_11\")>0", + "valueLength('D_406098499_11_11')>0", + "equals(D_579563781_11_11,178420302)", + "allExist('D_807431780_11_11','D_578895128_11_11')", + "equals(D_807431780_11_11,353358909)", + "equals(D_807431780_11_11,104430631)", + "valueIsOneOf('D_589588769_11_11',555374628)", + "valueIsOneOf('D_589588769_11_11',871673221)", + "valueIsOneOf('D_589588769_11_11',198654048)", + "valueIsOneOf('D_807431780_11_11',353358909)", + "equals(D_607773106_11_11,104430631)", + "equals(D_607773106_11_11,353358909)", + "equals(D_607773106_11_11,178420302)", + "12==1", + "12>1", + "equals(isNotDefined(D_406098499_12_12,false),false)", + "doesNotEqual(isNotDefined(D_406098499_12_12,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_12_12,false),false),greaterThan(12,1))", + "equals(D_579563781_12_12,654207589)", + "equals(D_579563781_12_12,536341288)", + "and(doesNotEqual(D_579563781_12_12,654207589),doesNotEqual(D_579563781_12_12,536341288))", + "equals(D_890637099_12_12,353358909)", + "doesNotEqual(D_890637099_12_12,353358909)", + "equals(D_578895128_12_12,939782495)", + "equals(D_578895128_12_12,135725957)", + "equals(D_578895128_12_12,518416174)", + "equals(D_578895128_12_12,847945207)", + "equals(D_578895128_12_12,283025574)", + "equals(D_578895128_12_12,942970912)", + "equals(D_578895128_12_12,596122041)", + "equals(D_578895128_12_12,489400183)", + "equals(D_578895128_12_12,863246236)", + "equals(D_578895128_12_12,607793249)", + "equals(D_578895128_12_12,532172400)", + "equals(D_578895128_12_12,754745617)", + "equals(D_578895128_12_12,665036297)", + "equals(D_578895128_12_12,200837530)", + "equals(D_578895128_12_12,990319383)", + "equals(D_578895128_12_12,487917585)", + "equals(D_578895128_12_12,603181162)", + "equals(D_578895128_12_12,482225200)", + "equals(D_578895128_12_12,295976386)", + "equals(D_578895128_12_12,764891959)", + "equals(D_578895128_12_12,248374037)", + "equals(D_578895128_12_12,139822395)", + "equals(D_578895128_12_12,723614811)", + "exists('D_957429734_12_12')", + "doesNotExist('D_957429734_12_12')", + "selectionCount(\"D_578895128_12_12\",true)>0 or valueLength(\"D_957429734_12_12\")>0", + "valueLength('D_406098499_12_12')>0", + "equals(D_579563781_12_12,178420302)", + "allExist('D_807431780_12_12','D_578895128_12_12')", + "equals(D_807431780_12_12,353358909)", + "equals(D_807431780_12_12,104430631)", + "valueIsOneOf('D_589588769_12_12',555374628)", + "valueIsOneOf('D_589588769_12_12',871673221)", + "valueIsOneOf('D_589588769_12_12',198654048)", + "valueIsOneOf('D_807431780_12_12',353358909)", + "equals(D_607773106_12_12,104430631)", + "equals(D_607773106_12_12,353358909)", + "equals(D_607773106_12_12,178420302)", + "13==1", + "13>1", + "equals(isNotDefined(D_406098499_13_13,false),false)", + "doesNotEqual(isNotDefined(D_406098499_13_13,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_13_13,false),false),greaterThan(13,1))", + "equals(D_579563781_13_13,654207589)", + "equals(D_579563781_13_13,536341288)", + "and(doesNotEqual(D_579563781_13_13,654207589),doesNotEqual(D_579563781_13_13,536341288))", + "equals(D_890637099_13_13,353358909)", + "doesNotEqual(D_890637099_13_13,353358909)", + "equals(D_578895128_13_13,939782495)", + "equals(D_578895128_13_13,135725957)", + "equals(D_578895128_13_13,518416174)", + "equals(D_578895128_13_13,847945207)", + "equals(D_578895128_13_13,283025574)", + "equals(D_578895128_13_13,942970912)", + "equals(D_578895128_13_13,596122041)", + "equals(D_578895128_13_13,489400183)", + "equals(D_578895128_13_13,863246236)", + "equals(D_578895128_13_13,607793249)", + "equals(D_578895128_13_13,532172400)", + "equals(D_578895128_13_13,754745617)", + "equals(D_578895128_13_13,665036297)", + "equals(D_578895128_13_13,200837530)", + "equals(D_578895128_13_13,990319383)", + "equals(D_578895128_13_13,487917585)", + "equals(D_578895128_13_13,603181162)", + "equals(D_578895128_13_13,482225200)", + "equals(D_578895128_13_13,295976386)", + "equals(D_578895128_13_13,764891959)", + "equals(D_578895128_13_13,248374037)", + "equals(D_578895128_13_13,139822395)", + "equals(D_578895128_13_13,723614811)", + "exists('D_957429734_13_13')", + "doesNotExist('D_957429734_13_13')", + "selectionCount(\"D_578895128_13_13\",true)>0 or valueLength(\"D_957429734_13_13\")>0", + "valueLength('D_406098499_13_13')>0", + "equals(D_579563781_13_13,178420302)", + "allExist('D_807431780_13_13','D_578895128_13_13')", + "equals(D_807431780_13_13,353358909)", + "equals(D_807431780_13_13,104430631)", + "valueIsOneOf('D_589588769_13_13',555374628)", + "valueIsOneOf('D_589588769_13_13',871673221)", + "valueIsOneOf('D_589588769_13_13',198654048)", + "valueIsOneOf('D_807431780_13_13',353358909)", + "equals(D_607773106_13_13,104430631)", + "equals(D_607773106_13_13,353358909)", + "equals(D_607773106_13_13,178420302)", + "14==1", + "14>1", + "equals(isNotDefined(D_406098499_14_14,false),false)", + "doesNotEqual(isNotDefined(D_406098499_14_14,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_14_14,false),false),greaterThan(14,1))", + "equals(D_579563781_14_14,654207589)", + "equals(D_579563781_14_14,536341288)", + "and(doesNotEqual(D_579563781_14_14,654207589),doesNotEqual(D_579563781_14_14,536341288))", + "equals(D_890637099_14_14,353358909)", + "doesNotEqual(D_890637099_14_14,353358909)", + "equals(D_578895128_14_14,939782495)", + "equals(D_578895128_14_14,135725957)", + "equals(D_578895128_14_14,518416174)", + "equals(D_578895128_14_14,847945207)", + "equals(D_578895128_14_14,283025574)", + "equals(D_578895128_14_14,942970912)", + "equals(D_578895128_14_14,596122041)", + "equals(D_578895128_14_14,489400183)", + "equals(D_578895128_14_14,863246236)", + "equals(D_578895128_14_14,607793249)", + "equals(D_578895128_14_14,532172400)", + "equals(D_578895128_14_14,754745617)", + "equals(D_578895128_14_14,665036297)", + "equals(D_578895128_14_14,200837530)", + "equals(D_578895128_14_14,990319383)", + "equals(D_578895128_14_14,487917585)", + "equals(D_578895128_14_14,603181162)", + "equals(D_578895128_14_14,482225200)", + "equals(D_578895128_14_14,295976386)", + "equals(D_578895128_14_14,764891959)", + "equals(D_578895128_14_14,248374037)", + "equals(D_578895128_14_14,139822395)", + "equals(D_578895128_14_14,723614811)", + "exists('D_957429734_14_14')", + "doesNotExist('D_957429734_14_14')", + "selectionCount(\"D_578895128_14_14\",true)>0 or valueLength(\"D_957429734_14_14\")>0", + "valueLength('D_406098499_14_14')>0", + "equals(D_579563781_14_14,178420302)", + "allExist('D_807431780_14_14','D_578895128_14_14')", + "equals(D_807431780_14_14,353358909)", + "equals(D_807431780_14_14,104430631)", + "valueIsOneOf('D_589588769_14_14',555374628)", + "valueIsOneOf('D_589588769_14_14',871673221)", + "valueIsOneOf('D_589588769_14_14',198654048)", + "valueIsOneOf('D_807431780_14_14',353358909)", + "equals(D_607773106_14_14,104430631)", + "equals(D_607773106_14_14,353358909)", + "equals(D_607773106_14_14,178420302)", + "15==1", + "15>1", + "equals(isNotDefined(D_406098499_15_15,false),false)", + "doesNotEqual(isNotDefined(D_406098499_15_15,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_15_15,false),false),greaterThan(15,1))", + "equals(D_579563781_15_15,654207589)", + "equals(D_579563781_15_15,536341288)", + "and(doesNotEqual(D_579563781_15_15,654207589),doesNotEqual(D_579563781_15_15,536341288))", + "equals(D_890637099_15_15,353358909)", + "doesNotEqual(D_890637099_15_15,353358909)", + "equals(D_578895128_15_15,939782495)", + "equals(D_578895128_15_15,135725957)", + "equals(D_578895128_15_15,518416174)", + "equals(D_578895128_15_15,847945207)", + "equals(D_578895128_15_15,283025574)", + "equals(D_578895128_15_15,942970912)", + "equals(D_578895128_15_15,596122041)", + "equals(D_578895128_15_15,489400183)", + "equals(D_578895128_15_15,863246236)", + "equals(D_578895128_15_15,607793249)", + "equals(D_578895128_15_15,532172400)", + "equals(D_578895128_15_15,754745617)", + "equals(D_578895128_15_15,665036297)", + "equals(D_578895128_15_15,200837530)", + "equals(D_578895128_15_15,990319383)", + "equals(D_578895128_15_15,487917585)", + "equals(D_578895128_15_15,603181162)", + "equals(D_578895128_15_15,482225200)", + "equals(D_578895128_15_15,295976386)", + "equals(D_578895128_15_15,764891959)", + "equals(D_578895128_15_15,248374037)", + "equals(D_578895128_15_15,139822395)", + "equals(D_578895128_15_15,723614811)", + "exists('D_957429734_15_15')", + "doesNotExist('D_957429734_15_15')", + "selectionCount(\"D_578895128_15_15\",true)>0 or valueLength(\"D_957429734_15_15\")>0", + "valueLength('D_406098499_15_15')>0", + "equals(D_579563781_15_15,178420302)", + "allExist('D_807431780_15_15','D_578895128_15_15')", + "equals(D_807431780_15_15,353358909)", + "equals(D_807431780_15_15,104430631)", + "valueIsOneOf('D_589588769_15_15',555374628)", + "valueIsOneOf('D_589588769_15_15',871673221)", + "valueIsOneOf('D_589588769_15_15',198654048)", + "valueIsOneOf('D_807431780_15_15',353358909)", + "equals(D_607773106_15_15,104430631)", + "equals(D_607773106_15_15,353358909)", + "equals(D_607773106_15_15,178420302)", + "16==1", + "16>1", + "equals(isNotDefined(D_406098499_16_16,false),false)", + "doesNotEqual(isNotDefined(D_406098499_16_16,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_16_16,false),false),greaterThan(16,1))", + "equals(D_579563781_16_16,654207589)", + "equals(D_579563781_16_16,536341288)", + "and(doesNotEqual(D_579563781_16_16,654207589),doesNotEqual(D_579563781_16_16,536341288))", + "equals(D_890637099_16_16,353358909)", + "doesNotEqual(D_890637099_16_16,353358909)", + "equals(D_578895128_16_16,939782495)", + "equals(D_578895128_16_16,135725957)", + "equals(D_578895128_16_16,518416174)", + "equals(D_578895128_16_16,847945207)", + "equals(D_578895128_16_16,283025574)", + "equals(D_578895128_16_16,942970912)", + "equals(D_578895128_16_16,596122041)", + "equals(D_578895128_16_16,489400183)", + "equals(D_578895128_16_16,863246236)", + "equals(D_578895128_16_16,607793249)", + "equals(D_578895128_16_16,532172400)", + "equals(D_578895128_16_16,754745617)", + "equals(D_578895128_16_16,665036297)", + "equals(D_578895128_16_16,200837530)", + "equals(D_578895128_16_16,990319383)", + "equals(D_578895128_16_16,487917585)", + "equals(D_578895128_16_16,603181162)", + "equals(D_578895128_16_16,482225200)", + "equals(D_578895128_16_16,295976386)", + "equals(D_578895128_16_16,764891959)", + "equals(D_578895128_16_16,248374037)", + "equals(D_578895128_16_16,139822395)", + "equals(D_578895128_16_16,723614811)", + "exists('D_957429734_16_16')", + "doesNotExist('D_957429734_16_16')", + "selectionCount(\"D_578895128_16_16\",true)>0 or valueLength(\"D_957429734_16_16\")>0", + "valueLength('D_406098499_16_16')>0", + "equals(D_579563781_16_16,178420302)", + "allExist('D_807431780_16_16','D_578895128_16_16')", + "equals(D_807431780_16_16,353358909)", + "equals(D_807431780_16_16,104430631)", + "valueIsOneOf('D_589588769_16_16',555374628)", + "valueIsOneOf('D_589588769_16_16',871673221)", + "valueIsOneOf('D_589588769_16_16',198654048)", + "valueIsOneOf('D_807431780_16_16',353358909)", + "equals(D_607773106_16_16,104430631)", + "equals(D_607773106_16_16,353358909)", + "equals(D_607773106_16_16,178420302)", + "17==1", + "17>1", + "equals(isNotDefined(D_406098499_17_17,false),false)", + "doesNotEqual(isNotDefined(D_406098499_17_17,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_17_17,false),false),greaterThan(17,1))", + "equals(D_579563781_17_17,654207589)", + "equals(D_579563781_17_17,536341288)", + "and(doesNotEqual(D_579563781_17_17,654207589),doesNotEqual(D_579563781_17_17,536341288))", + "equals(D_890637099_17_17,353358909)", + "doesNotEqual(D_890637099_17_17,353358909)", + "equals(D_578895128_17_17,939782495)", + "equals(D_578895128_17_17,135725957)", + "equals(D_578895128_17_17,518416174)", + "equals(D_578895128_17_17,847945207)", + "equals(D_578895128_17_17,283025574)", + "equals(D_578895128_17_17,942970912)", + "equals(D_578895128_17_17,596122041)", + "equals(D_578895128_17_17,489400183)", + "equals(D_578895128_17_17,863246236)", + "equals(D_578895128_17_17,607793249)", + "equals(D_578895128_17_17,532172400)", + "equals(D_578895128_17_17,754745617)", + "equals(D_578895128_17_17,665036297)", + "equals(D_578895128_17_17,200837530)", + "equals(D_578895128_17_17,990319383)", + "equals(D_578895128_17_17,487917585)", + "equals(D_578895128_17_17,603181162)", + "equals(D_578895128_17_17,482225200)", + "equals(D_578895128_17_17,295976386)", + "equals(D_578895128_17_17,764891959)", + "equals(D_578895128_17_17,248374037)", + "equals(D_578895128_17_17,139822395)", + "equals(D_578895128_17_17,723614811)", + "exists('D_957429734_17_17')", + "doesNotExist('D_957429734_17_17')", + "selectionCount(\"D_578895128_17_17\",true)>0 or valueLength(\"D_957429734_17_17\")>0", + "valueLength('D_406098499_17_17')>0", + "equals(D_579563781_17_17,178420302)", + "allExist('D_807431780_17_17','D_578895128_17_17')", + "equals(D_807431780_17_17,353358909)", + "equals(D_807431780_17_17,104430631)", + "valueIsOneOf('D_589588769_17_17',555374628)", + "valueIsOneOf('D_589588769_17_17',871673221)", + "valueIsOneOf('D_589588769_17_17',198654048)", + "valueIsOneOf('D_807431780_17_17',353358909)", + "equals(D_607773106_17_17,104430631)", + "equals(D_607773106_17_17,353358909)", + "equals(D_607773106_17_17,178420302)", + "18==1", + "18>1", + "equals(isNotDefined(D_406098499_18_18,false),false)", + "doesNotEqual(isNotDefined(D_406098499_18_18,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_18_18,false),false),greaterThan(18,1))", + "equals(D_579563781_18_18,654207589)", + "equals(D_579563781_18_18,536341288)", + "and(doesNotEqual(D_579563781_18_18,654207589),doesNotEqual(D_579563781_18_18,536341288))", + "equals(D_890637099_18_18,353358909)", + "doesNotEqual(D_890637099_18_18,353358909)", + "equals(D_578895128_18_18,939782495)", + "equals(D_578895128_18_18,135725957)", + "equals(D_578895128_18_18,518416174)", + "equals(D_578895128_18_18,847945207)", + "equals(D_578895128_18_18,283025574)", + "equals(D_578895128_18_18,942970912)", + "equals(D_578895128_18_18,596122041)", + "equals(D_578895128_18_18,489400183)", + "equals(D_578895128_18_18,863246236)", + "equals(D_578895128_18_18,607793249)", + "equals(D_578895128_18_18,532172400)", + "equals(D_578895128_18_18,754745617)", + "equals(D_578895128_18_18,665036297)", + "equals(D_578895128_18_18,200837530)", + "equals(D_578895128_18_18,990319383)", + "equals(D_578895128_18_18,487917585)", + "equals(D_578895128_18_18,603181162)", + "equals(D_578895128_18_18,482225200)", + "equals(D_578895128_18_18,295976386)", + "equals(D_578895128_18_18,764891959)", + "equals(D_578895128_18_18,248374037)", + "equals(D_578895128_18_18,139822395)", + "equals(D_578895128_18_18,723614811)", + "exists('D_957429734_18_18')", + "doesNotExist('D_957429734_18_18')", + "selectionCount(\"D_578895128_18_18\",true)>0 or valueLength(\"D_957429734_18_18\")>0", + "valueLength('D_406098499_18_18')>0", + "equals(D_579563781_18_18,178420302)", + "allExist('D_807431780_18_18','D_578895128_18_18')", + "equals(D_807431780_18_18,353358909)", + "equals(D_807431780_18_18,104430631)", + "valueIsOneOf('D_589588769_18_18',555374628)", + "valueIsOneOf('D_589588769_18_18',871673221)", + "valueIsOneOf('D_589588769_18_18',198654048)", + "valueIsOneOf('D_807431780_18_18',353358909)", + "equals(D_607773106_18_18,104430631)", + "equals(D_607773106_18_18,353358909)", + "equals(D_607773106_18_18,178420302)", + "19==1", + "19>1", + "equals(isNotDefined(D_406098499_19_19,false),false)", + "doesNotEqual(isNotDefined(D_406098499_19_19,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_19_19,false),false),greaterThan(19,1))", + "equals(D_579563781_19_19,654207589)", + "equals(D_579563781_19_19,536341288)", + "and(doesNotEqual(D_579563781_19_19,654207589),doesNotEqual(D_579563781_19_19,536341288))", + "equals(D_890637099_19_19,353358909)", + "doesNotEqual(D_890637099_19_19,353358909)", + "equals(D_578895128_19_19,939782495)", + "equals(D_578895128_19_19,135725957)", + "equals(D_578895128_19_19,518416174)", + "equals(D_578895128_19_19,847945207)", + "equals(D_578895128_19_19,283025574)", + "equals(D_578895128_19_19,942970912)", + "equals(D_578895128_19_19,596122041)", + "equals(D_578895128_19_19,489400183)", + "equals(D_578895128_19_19,863246236)", + "equals(D_578895128_19_19,607793249)", + "equals(D_578895128_19_19,532172400)", + "equals(D_578895128_19_19,754745617)", + "equals(D_578895128_19_19,665036297)", + "equals(D_578895128_19_19,200837530)", + "equals(D_578895128_19_19,990319383)", + "equals(D_578895128_19_19,487917585)", + "equals(D_578895128_19_19,603181162)", + "equals(D_578895128_19_19,482225200)", + "equals(D_578895128_19_19,295976386)", + "equals(D_578895128_19_19,764891959)", + "equals(D_578895128_19_19,248374037)", + "equals(D_578895128_19_19,139822395)", + "equals(D_578895128_19_19,723614811)", + "exists('D_957429734_19_19')", + "doesNotExist('D_957429734_19_19')", + "selectionCount(\"D_578895128_19_19\",true)>0 or valueLength(\"D_957429734_19_19\")>0", + "valueLength('D_406098499_19_19')>0", + "equals(D_579563781_19_19,178420302)", + "allExist('D_807431780_19_19','D_578895128_19_19')", + "equals(D_807431780_19_19,353358909)", + "equals(D_807431780_19_19,104430631)", + "valueIsOneOf('D_589588769_19_19',555374628)", + "valueIsOneOf('D_589588769_19_19',871673221)", + "valueIsOneOf('D_589588769_19_19',198654048)", + "valueIsOneOf('D_807431780_19_19',353358909)", + "equals(D_607773106_19_19,104430631)", + "equals(D_607773106_19_19,353358909)", + "equals(D_607773106_19_19,178420302)", + "20==1", + "20>1", + "equals(isNotDefined(D_406098499_20_20,false),false)", + "doesNotEqual(isNotDefined(D_406098499_20_20,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_20_20,false),false),greaterThan(20,1))", + "equals(D_579563781_20_20,654207589)", + "equals(D_579563781_20_20,536341288)", + "and(doesNotEqual(D_579563781_20_20,654207589),doesNotEqual(D_579563781_20_20,536341288))", + "equals(D_890637099_20_20,353358909)", + "doesNotEqual(D_890637099_20_20,353358909)", + "equals(D_578895128_20_20,939782495)", + "equals(D_578895128_20_20,135725957)", + "equals(D_578895128_20_20,518416174)", + "equals(D_578895128_20_20,847945207)", + "equals(D_578895128_20_20,283025574)", + "equals(D_578895128_20_20,942970912)", + "equals(D_578895128_20_20,596122041)", + "equals(D_578895128_20_20,489400183)", + "equals(D_578895128_20_20,863246236)", + "equals(D_578895128_20_20,607793249)", + "equals(D_578895128_20_20,532172400)", + "equals(D_578895128_20_20,754745617)", + "equals(D_578895128_20_20,665036297)", + "equals(D_578895128_20_20,200837530)", + "equals(D_578895128_20_20,990319383)", + "equals(D_578895128_20_20,487917585)", + "equals(D_578895128_20_20,603181162)", + "equals(D_578895128_20_20,482225200)", + "equals(D_578895128_20_20,295976386)", + "equals(D_578895128_20_20,764891959)", + "equals(D_578895128_20_20,248374037)", + "equals(D_578895128_20_20,139822395)", + "equals(D_578895128_20_20,723614811)", + "exists('D_957429734_20_20')", + "doesNotExist('D_957429734_20_20')", + "selectionCount(\"D_578895128_20_20\",true)>0 or valueLength(\"D_957429734_20_20\")>0", + "valueLength('D_406098499_20_20')>0", + "equals(D_579563781_20_20,178420302)", + "allExist('D_807431780_20_20','D_578895128_20_20')", + "equals(D_807431780_20_20,353358909)", + "equals(D_807431780_20_20,104430631)", + "valueIsOneOf('D_589588769_20_20',555374628)", + "valueIsOneOf('D_589588769_20_20',871673221)", + "valueIsOneOf('D_589588769_20_20',198654048)", + "valueIsOneOf('D_807431780_20_20',353358909)", + "equals(D_607773106_20_20,104430631)", + "equals(D_607773106_20_20,353358909)", + "equals(D_607773106_20_20,178420302)", + "21==1", + "21>1", + "equals(isNotDefined(D_406098499_21_21,false),false)", + "doesNotEqual(isNotDefined(D_406098499_21_21,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_21_21,false),false),greaterThan(21,1))", + "equals(D_579563781_21_21,654207589)", + "equals(D_579563781_21_21,536341288)", + "and(doesNotEqual(D_579563781_21_21,654207589),doesNotEqual(D_579563781_21_21,536341288))", + "equals(D_890637099_21_21,353358909)", + "doesNotEqual(D_890637099_21_21,353358909)", + "equals(D_578895128_21_21,939782495)", + "equals(D_578895128_21_21,135725957)", + "equals(D_578895128_21_21,518416174)", + "equals(D_578895128_21_21,847945207)", + "equals(D_578895128_21_21,283025574)", + "equals(D_578895128_21_21,942970912)", + "equals(D_578895128_21_21,596122041)", + "equals(D_578895128_21_21,489400183)", + "equals(D_578895128_21_21,863246236)", + "equals(D_578895128_21_21,607793249)", + "equals(D_578895128_21_21,532172400)", + "equals(D_578895128_21_21,754745617)", + "equals(D_578895128_21_21,665036297)", + "equals(D_578895128_21_21,200837530)", + "equals(D_578895128_21_21,990319383)", + "equals(D_578895128_21_21,487917585)", + "equals(D_578895128_21_21,603181162)", + "equals(D_578895128_21_21,482225200)", + "equals(D_578895128_21_21,295976386)", + "equals(D_578895128_21_21,764891959)", + "equals(D_578895128_21_21,248374037)", + "equals(D_578895128_21_21,139822395)", + "equals(D_578895128_21_21,723614811)", + "exists('D_957429734_21_21')", + "doesNotExist('D_957429734_21_21')", + "selectionCount(\"D_578895128_21_21\",true)>0 or valueLength(\"D_957429734_21_21\")>0", + "valueLength('D_406098499_21_21')>0", + "equals(D_579563781_21_21,178420302)", + "allExist('D_807431780_21_21','D_578895128_21_21')", + "equals(D_807431780_21_21,353358909)", + "equals(D_807431780_21_21,104430631)", + "valueIsOneOf('D_589588769_21_21',555374628)", + "valueIsOneOf('D_589588769_21_21',871673221)", + "valueIsOneOf('D_589588769_21_21',198654048)", + "valueIsOneOf('D_807431780_21_21',353358909)", + "equals(D_607773106_21_21,104430631)", + "equals(D_607773106_21_21,353358909)", + "equals(D_607773106_21_21,178420302)", + "22==1", + "22>1", + "equals(isNotDefined(D_406098499_22_22,false),false)", + "doesNotEqual(isNotDefined(D_406098499_22_22,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_22_22,false),false),greaterThan(22,1))", + "equals(D_579563781_22_22,654207589)", + "equals(D_579563781_22_22,536341288)", + "and(doesNotEqual(D_579563781_22_22,654207589),doesNotEqual(D_579563781_22_22,536341288))", + "equals(D_890637099_22_22,353358909)", + "doesNotEqual(D_890637099_22_22,353358909)", + "equals(D_578895128_22_22,939782495)", + "equals(D_578895128_22_22,135725957)", + "equals(D_578895128_22_22,518416174)", + "equals(D_578895128_22_22,847945207)", + "equals(D_578895128_22_22,283025574)", + "equals(D_578895128_22_22,942970912)", + "equals(D_578895128_22_22,596122041)", + "equals(D_578895128_22_22,489400183)", + "equals(D_578895128_22_22,863246236)", + "equals(D_578895128_22_22,607793249)", + "equals(D_578895128_22_22,532172400)", + "equals(D_578895128_22_22,754745617)", + "equals(D_578895128_22_22,665036297)", + "equals(D_578895128_22_22,200837530)", + "equals(D_578895128_22_22,990319383)", + "equals(D_578895128_22_22,487917585)", + "equals(D_578895128_22_22,603181162)", + "equals(D_578895128_22_22,482225200)", + "equals(D_578895128_22_22,295976386)", + "equals(D_578895128_22_22,764891959)", + "equals(D_578895128_22_22,248374037)", + "equals(D_578895128_22_22,139822395)", + "equals(D_578895128_22_22,723614811)", + "exists('D_957429734_22_22')", + "doesNotExist('D_957429734_22_22')", + "selectionCount(\"D_578895128_22_22\",true)>0 or valueLength(\"D_957429734_22_22\")>0", + "valueLength('D_406098499_22_22')>0", + "equals(D_579563781_22_22,178420302)", + "allExist('D_807431780_22_22','D_578895128_22_22')", + "equals(D_807431780_22_22,353358909)", + "equals(D_807431780_22_22,104430631)", + "valueIsOneOf('D_589588769_22_22',555374628)", + "valueIsOneOf('D_589588769_22_22',871673221)", + "valueIsOneOf('D_589588769_22_22',198654048)", + "valueIsOneOf('D_807431780_22_22',353358909)", + "equals(D_607773106_22_22,104430631)", + "equals(D_607773106_22_22,353358909)", + "equals(D_607773106_22_22,178420302)", + "23==1", + "23>1", + "equals(isNotDefined(D_406098499_23_23,false),false)", + "doesNotEqual(isNotDefined(D_406098499_23_23,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_23_23,false),false),greaterThan(23,1))", + "equals(D_579563781_23_23,654207589)", + "equals(D_579563781_23_23,536341288)", + "and(doesNotEqual(D_579563781_23_23,654207589),doesNotEqual(D_579563781_23_23,536341288))", + "equals(D_890637099_23_23,353358909)", + "doesNotEqual(D_890637099_23_23,353358909)", + "equals(D_578895128_23_23,939782495)", + "equals(D_578895128_23_23,135725957)", + "equals(D_578895128_23_23,518416174)", + "equals(D_578895128_23_23,847945207)", + "equals(D_578895128_23_23,283025574)", + "equals(D_578895128_23_23,942970912)", + "equals(D_578895128_23_23,596122041)", + "equals(D_578895128_23_23,489400183)", + "equals(D_578895128_23_23,863246236)", + "equals(D_578895128_23_23,607793249)", + "equals(D_578895128_23_23,532172400)", + "equals(D_578895128_23_23,754745617)", + "equals(D_578895128_23_23,665036297)", + "equals(D_578895128_23_23,200837530)", + "equals(D_578895128_23_23,990319383)", + "equals(D_578895128_23_23,487917585)", + "equals(D_578895128_23_23,603181162)", + "equals(D_578895128_23_23,482225200)", + "equals(D_578895128_23_23,295976386)", + "equals(D_578895128_23_23,764891959)", + "equals(D_578895128_23_23,248374037)", + "equals(D_578895128_23_23,139822395)", + "equals(D_578895128_23_23,723614811)", + "exists('D_957429734_23_23')", + "doesNotExist('D_957429734_23_23')", + "selectionCount(\"D_578895128_23_23\",true)>0 or valueLength(\"D_957429734_23_23\")>0", + "valueLength('D_406098499_23_23')>0", + "equals(D_579563781_23_23,178420302)", + "allExist('D_807431780_23_23','D_578895128_23_23')", + "equals(D_807431780_23_23,353358909)", + "equals(D_807431780_23_23,104430631)", + "valueIsOneOf('D_589588769_23_23',555374628)", + "valueIsOneOf('D_589588769_23_23',871673221)", + "valueIsOneOf('D_589588769_23_23',198654048)", + "valueIsOneOf('D_807431780_23_23',353358909)", + "equals(D_607773106_23_23,104430631)", + "equals(D_607773106_23_23,353358909)", + "equals(D_607773106_23_23,178420302)", + "24==1", + "24>1", + "equals(isNotDefined(D_406098499_24_24,false),false)", + "doesNotEqual(isNotDefined(D_406098499_24_24,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_24_24,false),false),greaterThan(24,1))", + "equals(D_579563781_24_24,654207589)", + "equals(D_579563781_24_24,536341288)", + "and(doesNotEqual(D_579563781_24_24,654207589),doesNotEqual(D_579563781_24_24,536341288))", + "equals(D_890637099_24_24,353358909)", + "doesNotEqual(D_890637099_24_24,353358909)", + "equals(D_578895128_24_24,939782495)", + "equals(D_578895128_24_24,135725957)", + "equals(D_578895128_24_24,518416174)", + "equals(D_578895128_24_24,847945207)", + "equals(D_578895128_24_24,283025574)", + "equals(D_578895128_24_24,942970912)", + "equals(D_578895128_24_24,596122041)", + "equals(D_578895128_24_24,489400183)", + "equals(D_578895128_24_24,863246236)", + "equals(D_578895128_24_24,607793249)", + "equals(D_578895128_24_24,532172400)", + "equals(D_578895128_24_24,754745617)", + "equals(D_578895128_24_24,665036297)", + "equals(D_578895128_24_24,200837530)", + "equals(D_578895128_24_24,990319383)", + "equals(D_578895128_24_24,487917585)", + "equals(D_578895128_24_24,603181162)", + "equals(D_578895128_24_24,482225200)", + "equals(D_578895128_24_24,295976386)", + "equals(D_578895128_24_24,764891959)", + "equals(D_578895128_24_24,248374037)", + "equals(D_578895128_24_24,139822395)", + "equals(D_578895128_24_24,723614811)", + "exists('D_957429734_24_24')", + "doesNotExist('D_957429734_24_24')", + "selectionCount(\"D_578895128_24_24\",true)>0 or valueLength(\"D_957429734_24_24\")>0", + "valueLength('D_406098499_24_24')>0", + "equals(D_579563781_24_24,178420302)", + "allExist('D_807431780_24_24','D_578895128_24_24')", + "equals(D_807431780_24_24,353358909)", + "equals(D_807431780_24_24,104430631)", + "valueIsOneOf('D_589588769_24_24',555374628)", + "valueIsOneOf('D_589588769_24_24',871673221)", + "valueIsOneOf('D_589588769_24_24',198654048)", + "valueIsOneOf('D_807431780_24_24',353358909)", + "equals(D_607773106_24_24,104430631)", + "equals(D_607773106_24_24,353358909)", + "equals(D_607773106_24_24,178420302)", + "25==1", + "25>1", + "equals(isNotDefined(D_406098499_25_25,false),false)", + "doesNotEqual(isNotDefined(D_406098499_25_25,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_25_25,false),false),greaterThan(25,1))", + "equals(D_579563781_25_25,654207589)", + "equals(D_579563781_25_25,536341288)", + "and(doesNotEqual(D_579563781_25_25,654207589),doesNotEqual(D_579563781_25_25,536341288))", + "equals(D_890637099_25_25,353358909)", + "doesNotEqual(D_890637099_25_25,353358909)", + "equals(D_578895128_25_25,939782495)", + "equals(D_578895128_25_25,135725957)", + "equals(D_578895128_25_25,518416174)", + "equals(D_578895128_25_25,847945207)", + "equals(D_578895128_25_25,283025574)", + "equals(D_578895128_25_25,942970912)", + "equals(D_578895128_25_25,596122041)", + "equals(D_578895128_25_25,489400183)", + "equals(D_578895128_25_25,863246236)", + "equals(D_578895128_25_25,607793249)", + "equals(D_578895128_25_25,532172400)", + "equals(D_578895128_25_25,754745617)", + "equals(D_578895128_25_25,665036297)", + "equals(D_578895128_25_25,200837530)", + "equals(D_578895128_25_25,990319383)", + "equals(D_578895128_25_25,487917585)", + "equals(D_578895128_25_25,603181162)", + "equals(D_578895128_25_25,482225200)", + "equals(D_578895128_25_25,295976386)", + "equals(D_578895128_25_25,764891959)", + "equals(D_578895128_25_25,248374037)", + "equals(D_578895128_25_25,139822395)", + "equals(D_578895128_25_25,723614811)", + "exists('D_957429734_25_25')", + "doesNotExist('D_957429734_25_25')", + "selectionCount(\"D_578895128_25_25\",true)>0 or valueLength(\"D_957429734_25_25\")>0", + "valueLength('D_406098499_25_25')>0", + "equals(D_579563781_25_25,178420302)", + "allExist('D_807431780_25_25','D_578895128_25_25')", + "equals(D_807431780_25_25,353358909)", + "equals(D_807431780_25_25,104430631)", + "valueIsOneOf('D_589588769_25_25',555374628)", + "valueIsOneOf('D_589588769_25_25',871673221)", + "valueIsOneOf('D_589588769_25_25',198654048)", + "valueIsOneOf('D_807431780_25_25',353358909)", + "equals(D_607773106_25_25,104430631)", + "equals(D_607773106_25_25,353358909)", + "equals(D_607773106_25_25,178420302)", + "isNotDefined(D_446999144,0)", + "or(equals(D_446999144,0),or(isNotDefined(D_446999144,0),greaterThanOrEqual(D_446999144,2)))", + "equals(isNotDefined(D_714001034_1_1,false),false)", + "doesNotEqual(isNotDefined(D_714001034_1_1,false),false)", + "greaterThan(D_446999144,1)", + "equals(D_887697329_1_1,654207589)", + "equals(D_887697329_1_1,536341288)", + "and(doesNotEqual(D_887697329_1_1,654207589),doesNotEqual(D_887697329_1_1,536341288))", + "equals(D_418392907_1_1,353358909)", + "doesNotEqual(D_418392907_1_1,353358909)", + "equals(D_812370563_1_1,939782495)", + "equals(D_812370563_1_1,135725957)", + "equals(D_812370563_1_1,518416174)", + "equals(D_812370563_1_1,847945207)", + "equals(D_812370563_1_1,283025574)", + "equals(D_812370563_1_1,942970912)", + "equals(D_812370563_1_1,596122041)", + "equals(D_812370563_1_1,489400183)", + "equals(D_812370563_1_1,863246236)", + "equals(D_812370563_1_1,607793249)", + "equals(D_812370563_1_1,532172400)", + "equals(D_812370563_1_1,754745617)", + "equals(D_812370563_1_1,665036297)", + "equals(D_812370563_1_1,200837530)", + "equals(D_812370563_1_1,990319383)", + "equals(D_812370563_1_1,487917585)", + "equals(D_812370563_1_1,603181162)", + "equals(D_812370563_1_1,482225200)", + "equals(D_812370563_1_1,295976386)", + "equals(D_812370563_1_1,764891959)", + "equals(D_812370563_1_1,248374037)", + "equals(D_812370563_1_1,139822395)", + "equals(D_812370563_1_1,723614811)", + "valueLength('D_933110091_1_1')>0", + "doesNotExist('D_933110091_1_1')", + "selectionCount(\"D_812370563_1_1\",true)>0 or valueLength(\"D_933110091_1_1\")>0", + "valueLength('D_714001034_1_1')>0", + "equals(D_887697329_1_1,178420302)", + "allExist('D_473529484_1_1','D_812370563_1_1')", + "equals(D_473529484_1_1,353358909)", + "equals(D_473529484_1_1,104430631)", + "equals(D_873968217_1_1,709650750)", + "equals(D_873968217_1_1,810290359)", + "equals(D_873968217_1_1,509607548)", + "equals(D_873968217_1_1,784922042)", + "equals(D_718867914_1_1,104430631)", + "equals(D_718867914_1_1,353358909)", + "equals(D_718867914_1_1,178420302)", + "equals(isNotDefined(D_714001034_2_2,false),false)", + "doesNotEqual(isNotDefined(D_714001034_2_2,false),false)", + "equals(D_887697329_2_2,654207589)", + "equals(D_887697329_2_2,536341288)", + "and(doesNotEqual(D_887697329_2_2,654207589),doesNotEqual(D_887697329_2_2,536341288))", + "equals(D_418392907_2_2,353358909)", + "doesNotEqual(D_418392907_2_2,353358909)", + "equals(D_812370563_2_2,939782495)", + "equals(D_812370563_2_2,135725957)", + "equals(D_812370563_2_2,518416174)", + "equals(D_812370563_2_2,847945207)", + "equals(D_812370563_2_2,283025574)", + "equals(D_812370563_2_2,942970912)", + "equals(D_812370563_2_2,596122041)", + "equals(D_812370563_2_2,489400183)", + "equals(D_812370563_2_2,863246236)", + "equals(D_812370563_2_2,607793249)", + "equals(D_812370563_2_2,532172400)", + "equals(D_812370563_2_2,754745617)", + "equals(D_812370563_2_2,665036297)", + "equals(D_812370563_2_2,200837530)", + "equals(D_812370563_2_2,990319383)", + "equals(D_812370563_2_2,487917585)", + "equals(D_812370563_2_2,603181162)", + "equals(D_812370563_2_2,482225200)", + "equals(D_812370563_2_2,295976386)", + "equals(D_812370563_2_2,764891959)", + "equals(D_812370563_2_2,248374037)", + "equals(D_812370563_2_2,139822395)", + "equals(D_812370563_2_2,723614811)", + "valueLength('D_933110091_2_2')>0", + "doesNotExist('D_933110091_2_2')", + "selectionCount(\"D_812370563_2_2\",true)>0 or valueLength(\"D_933110091_2_2\")>0", + "valueLength('D_714001034_2_2')>0", + "equals(D_887697329_2_2,178420302)", + "allExist('D_473529484_2_2','D_812370563_2_2')", + "equals(D_473529484_2_2,353358909)", + "equals(D_473529484_2_2,104430631)", + "equals(D_873968217_2_2,709650750)", + "equals(D_873968217_2_2,810290359)", + "equals(D_873968217_2_2,509607548)", + "equals(D_873968217_2_2,784922042)", + "equals(D_718867914_2_2,104430631)", + "equals(D_718867914_2_2,353358909)", + "equals(D_718867914_2_2,178420302)", + "equals(isNotDefined(D_714001034_3_3,false),false)", + "doesNotEqual(isNotDefined(D_714001034_3_3,false),false)", + "equals(D_887697329_3_3,654207589)", + "equals(D_887697329_3_3,536341288)", + "and(doesNotEqual(D_887697329_3_3,654207589),doesNotEqual(D_887697329_3_3,536341288))", + "equals(D_418392907_3_3,353358909)", + "doesNotEqual(D_418392907_3_3,353358909)", + "equals(D_812370563_3_3,939782495)", + "equals(D_812370563_3_3,135725957)", + "equals(D_812370563_3_3,518416174)", + "equals(D_812370563_3_3,847945207)", + "equals(D_812370563_3_3,283025574)", + "equals(D_812370563_3_3,942970912)", + "equals(D_812370563_3_3,596122041)", + "equals(D_812370563_3_3,489400183)", + "equals(D_812370563_3_3,863246236)", + "equals(D_812370563_3_3,607793249)", + "equals(D_812370563_3_3,532172400)", + "equals(D_812370563_3_3,754745617)", + "equals(D_812370563_3_3,665036297)", + "equals(D_812370563_3_3,200837530)", + "equals(D_812370563_3_3,990319383)", + "equals(D_812370563_3_3,487917585)", + "equals(D_812370563_3_3,603181162)", + "equals(D_812370563_3_3,482225200)", + "equals(D_812370563_3_3,295976386)", + "equals(D_812370563_3_3,764891959)", + "equals(D_812370563_3_3,248374037)", + "equals(D_812370563_3_3,139822395)", + "equals(D_812370563_3_3,723614811)", + "valueLength('D_933110091_3_3')>0", + "doesNotExist('D_933110091_3_3')", + "selectionCount(\"D_812370563_3_3\",true)>0 or valueLength(\"D_933110091_3_3\")>0", + "valueLength('D_714001034_3_3')>0", + "equals(D_887697329_3_3,178420302)", + "allExist('D_473529484_3_3','D_812370563_3_3')", + "equals(D_473529484_3_3,353358909)", + "equals(D_473529484_3_3,104430631)", + "equals(D_873968217_3_3,709650750)", + "equals(D_873968217_3_3,810290359)", + "equals(D_873968217_3_3,509607548)", + "equals(D_873968217_3_3,784922042)", + "equals(D_718867914_3_3,104430631)", + "equals(D_718867914_3_3,353358909)", + "equals(D_718867914_3_3,178420302)", + "equals(isNotDefined(D_714001034_4_4,false),false)", + "doesNotEqual(isNotDefined(D_714001034_4_4,false),false)", + "equals(D_887697329_4_4,654207589)", + "equals(D_887697329_4_4,536341288)", + "and(doesNotEqual(D_887697329_4_4,654207589),doesNotEqual(D_887697329_4_4,536341288))", + "equals(D_418392907_4_4,353358909)", + "doesNotEqual(D_418392907_4_4,353358909)", + "equals(D_812370563_4_4,939782495)", + "equals(D_812370563_4_4,135725957)", + "equals(D_812370563_4_4,518416174)", + "equals(D_812370563_4_4,847945207)", + "equals(D_812370563_4_4,283025574)", + "equals(D_812370563_4_4,942970912)", + "equals(D_812370563_4_4,596122041)", + "equals(D_812370563_4_4,489400183)", + "equals(D_812370563_4_4,863246236)", + "equals(D_812370563_4_4,607793249)", + "equals(D_812370563_4_4,532172400)", + "equals(D_812370563_4_4,754745617)", + "equals(D_812370563_4_4,665036297)", + "equals(D_812370563_4_4,200837530)", + "equals(D_812370563_4_4,990319383)", + "equals(D_812370563_4_4,487917585)", + "equals(D_812370563_4_4,603181162)", + "equals(D_812370563_4_4,482225200)", + "equals(D_812370563_4_4,295976386)", + "equals(D_812370563_4_4,764891959)", + "equals(D_812370563_4_4,248374037)", + "equals(D_812370563_4_4,139822395)", + "equals(D_812370563_4_4,723614811)", + "valueLength('D_933110091_4_4')>0", + "doesNotExist('D_933110091_4_4')", + "selectionCount(\"D_812370563_4_4\",true)>0 or valueLength(\"D_933110091_4_4\")>0", + "valueLength('D_714001034_4_4')>0", + "equals(D_887697329_4_4,178420302)", + "allExist('D_473529484_4_4','D_812370563_4_4')", + "equals(D_473529484_4_4,353358909)", + "equals(D_473529484_4_4,104430631)", + "equals(D_873968217_4_4,709650750)", + "equals(D_873968217_4_4,810290359)", + "equals(D_873968217_4_4,509607548)", + "equals(D_873968217_4_4,784922042)", + "equals(D_718867914_4_4,104430631)", + "equals(D_718867914_4_4,353358909)", + "equals(D_718867914_4_4,178420302)", + "equals(isNotDefined(D_714001034_5_5,false),false)", + "doesNotEqual(isNotDefined(D_714001034_5_5,false),false)", + "equals(D_887697329_5_5,654207589)", + "equals(D_887697329_5_5,536341288)", + "and(doesNotEqual(D_887697329_5_5,654207589),doesNotEqual(D_887697329_5_5,536341288))", + "equals(D_418392907_5_5,353358909)", + "doesNotEqual(D_418392907_5_5,353358909)", + "equals(D_812370563_5_5,939782495)", + "equals(D_812370563_5_5,135725957)", + "equals(D_812370563_5_5,518416174)", + "equals(D_812370563_5_5,847945207)", + "equals(D_812370563_5_5,283025574)", + "equals(D_812370563_5_5,942970912)", + "equals(D_812370563_5_5,596122041)", + "equals(D_812370563_5_5,489400183)", + "equals(D_812370563_5_5,863246236)", + "equals(D_812370563_5_5,607793249)", + "equals(D_812370563_5_5,532172400)", + "equals(D_812370563_5_5,754745617)", + "equals(D_812370563_5_5,665036297)", + "equals(D_812370563_5_5,200837530)", + "equals(D_812370563_5_5,990319383)", + "equals(D_812370563_5_5,487917585)", + "equals(D_812370563_5_5,603181162)", + "equals(D_812370563_5_5,482225200)", + "equals(D_812370563_5_5,295976386)", + "equals(D_812370563_5_5,764891959)", + "equals(D_812370563_5_5,248374037)", + "equals(D_812370563_5_5,139822395)", + "equals(D_812370563_5_5,723614811)", + "valueLength('D_933110091_5_5')>0", + "doesNotExist('D_933110091_5_5')", + "selectionCount(\"D_812370563_5_5\",true)>0 or valueLength(\"D_933110091_5_5\")>0", + "valueLength('D_714001034_5_5')>0", + "equals(D_887697329_5_5,178420302)", + "allExist('D_473529484_5_5','D_812370563_5_5')", + "equals(D_473529484_5_5,353358909)", + "equals(D_473529484_5_5,104430631)", + "equals(D_873968217_5_5,709650750)", + "equals(D_873968217_5_5,810290359)", + "equals(D_873968217_5_5,509607548)", + "equals(D_873968217_5_5,784922042)", + "equals(D_718867914_5_5,104430631)", + "equals(D_718867914_5_5,353358909)", + "equals(D_718867914_5_5,178420302)", + "equals(isNotDefined(D_714001034_6_6,false),false)", + "doesNotEqual(isNotDefined(D_714001034_6_6,false),false)", + "equals(D_887697329_6_6,654207589)", + "equals(D_887697329_6_6,536341288)", + "and(doesNotEqual(D_887697329_6_6,654207589),doesNotEqual(D_887697329_6_6,536341288))", + "equals(D_418392907_6_6,353358909)", + "doesNotEqual(D_418392907_6_6,353358909)", + "equals(D_812370563_6_6,939782495)", + "equals(D_812370563_6_6,135725957)", + "equals(D_812370563_6_6,518416174)", + "equals(D_812370563_6_6,847945207)", + "equals(D_812370563_6_6,283025574)", + "equals(D_812370563_6_6,942970912)", + "equals(D_812370563_6_6,596122041)", + "equals(D_812370563_6_6,489400183)", + "equals(D_812370563_6_6,863246236)", + "equals(D_812370563_6_6,607793249)", + "equals(D_812370563_6_6,532172400)", + "equals(D_812370563_6_6,754745617)", + "equals(D_812370563_6_6,665036297)", + "equals(D_812370563_6_6,200837530)", + "equals(D_812370563_6_6,990319383)", + "equals(D_812370563_6_6,487917585)", + "equals(D_812370563_6_6,603181162)", + "equals(D_812370563_6_6,482225200)", + "equals(D_812370563_6_6,295976386)", + "equals(D_812370563_6_6,764891959)", + "equals(D_812370563_6_6,248374037)", + "equals(D_812370563_6_6,139822395)", + "equals(D_812370563_6_6,723614811)", + "valueLength('D_933110091_6_6')>0", + "doesNotExist('D_933110091_6_6')", + "selectionCount(\"D_812370563_6_6\",true)>0 or valueLength(\"D_933110091_6_6\")>0", + "valueLength('D_714001034_6_6')>0", + "equals(D_887697329_6_6,178420302)", + "allExist('D_473529484_6_6','D_812370563_6_6')", + "equals(D_473529484_6_6,353358909)", + "equals(D_473529484_6_6,104430631)", + "equals(D_873968217_6_6,709650750)", + "equals(D_873968217_6_6,810290359)", + "equals(D_873968217_6_6,509607548)", + "equals(D_873968217_6_6,784922042)", + "equals(D_718867914_6_6,104430631)", + "equals(D_718867914_6_6,353358909)", + "equals(D_718867914_6_6,178420302)", + "equals(isNotDefined(D_714001034_7_7,false),false)", + "doesNotEqual(isNotDefined(D_714001034_7_7,false),false)", + "equals(D_887697329_7_7,654207589)", + "equals(D_887697329_7_7,536341288)", + "and(doesNotEqual(D_887697329_7_7,654207589),doesNotEqual(D_887697329_7_7,536341288))", + "equals(D_418392907_7_7,353358909)", + "doesNotEqual(D_418392907_7_7,353358909)", + "equals(D_812370563_7_7,939782495)", + "equals(D_812370563_7_7,135725957)", + "equals(D_812370563_7_7,518416174)", + "equals(D_812370563_7_7,847945207)", + "equals(D_812370563_7_7,283025574)", + "equals(D_812370563_7_7,942970912)", + "equals(D_812370563_7_7,596122041)", + "equals(D_812370563_7_7,489400183)", + "equals(D_812370563_7_7,863246236)", + "equals(D_812370563_7_7,607793249)", + "equals(D_812370563_7_7,532172400)", + "equals(D_812370563_7_7,754745617)", + "equals(D_812370563_7_7,665036297)", + "equals(D_812370563_7_7,200837530)", + "equals(D_812370563_7_7,990319383)", + "equals(D_812370563_7_7,487917585)", + "equals(D_812370563_7_7,603181162)", + "equals(D_812370563_7_7,482225200)", + "equals(D_812370563_7_7,295976386)", + "equals(D_812370563_7_7,764891959)", + "equals(D_812370563_7_7,248374037)", + "equals(D_812370563_7_7,139822395)", + "equals(D_812370563_7_7,723614811)", + "valueLength('D_933110091_7_7')>0", + "doesNotExist('D_933110091_7_7')", + "selectionCount(\"D_812370563_7_7\",true)>0 or valueLength(\"D_933110091_7_7\")>0", + "valueLength('D_714001034_7_7')>0", + "equals(D_887697329_7_7,178420302)", + "allExist('D_473529484_7_7','D_812370563_7_7')", + "equals(D_473529484_7_7,353358909)", + "equals(D_473529484_7_7,104430631)", + "equals(D_873968217_7_7,709650750)", + "equals(D_873968217_7_7,810290359)", + "equals(D_873968217_7_7,509607548)", + "equals(D_873968217_7_7,784922042)", + "equals(D_718867914_7_7,104430631)", + "equals(D_718867914_7_7,353358909)", + "equals(D_718867914_7_7,178420302)", + "equals(isNotDefined(D_714001034_8_8,false),false)", + "doesNotEqual(isNotDefined(D_714001034_8_8,false),false)", + "equals(D_887697329_8_8,654207589)", + "equals(D_887697329_8_8,536341288)", + "and(doesNotEqual(D_887697329_8_8,654207589),doesNotEqual(D_887697329_8_8,536341288))", + "equals(D_418392907_8_8,353358909)", + "doesNotEqual(D_418392907_8_8,353358909)", + "equals(D_812370563_8_8,939782495)", + "equals(D_812370563_8_8,135725957)", + "equals(D_812370563_8_8,518416174)", + "equals(D_812370563_8_8,847945207)", + "equals(D_812370563_8_8,283025574)", + "equals(D_812370563_8_8,942970912)", + "equals(D_812370563_8_8,596122041)", + "equals(D_812370563_8_8,489400183)", + "equals(D_812370563_8_8,863246236)", + "equals(D_812370563_8_8,607793249)", + "equals(D_812370563_8_8,532172400)", + "equals(D_812370563_8_8,754745617)", + "equals(D_812370563_8_8,665036297)", + "equals(D_812370563_8_8,200837530)", + "equals(D_812370563_8_8,990319383)", + "equals(D_812370563_8_8,487917585)", + "equals(D_812370563_8_8,603181162)", + "equals(D_812370563_8_8,482225200)", + "equals(D_812370563_8_8,295976386)", + "equals(D_812370563_8_8,764891959)", + "equals(D_812370563_8_8,248374037)", + "equals(D_812370563_8_8,139822395)", + "equals(D_812370563_8_8,723614811)", + "valueLength('D_933110091_8_8')>0", + "doesNotExist('D_933110091_8_8')", + "selectionCount(\"D_812370563_8_8\",true)>0 or valueLength(\"D_933110091_8_8\")>0", + "valueLength('D_714001034_8_8')>0", + "equals(D_887697329_8_8,178420302)", + "allExist('D_473529484_8_8','D_812370563_8_8')", + "equals(D_473529484_8_8,353358909)", + "equals(D_473529484_8_8,104430631)", + "equals(D_873968217_8_8,709650750)", + "equals(D_873968217_8_8,810290359)", + "equals(D_873968217_8_8,509607548)", + "equals(D_873968217_8_8,784922042)", + "equals(D_718867914_8_8,104430631)", + "equals(D_718867914_8_8,353358909)", + "equals(D_718867914_8_8,178420302)", + "equals(isNotDefined(D_714001034_9_9,false),false)", + "doesNotEqual(isNotDefined(D_714001034_9_9,false),false)", + "equals(D_887697329_9_9,654207589)", + "equals(D_887697329_9_9,536341288)", + "and(doesNotEqual(D_887697329_9_9,654207589),doesNotEqual(D_887697329_9_9,536341288))", + "equals(D_418392907_9_9,353358909)", + "doesNotEqual(D_418392907_9_9,353358909)", + "equals(D_812370563_9_9,939782495)", + "equals(D_812370563_9_9,135725957)", + "equals(D_812370563_9_9,518416174)", + "equals(D_812370563_9_9,847945207)", + "equals(D_812370563_9_9,283025574)", + "equals(D_812370563_9_9,942970912)", + "equals(D_812370563_9_9,596122041)", + "equals(D_812370563_9_9,489400183)", + "equals(D_812370563_9_9,863246236)", + "equals(D_812370563_9_9,607793249)", + "equals(D_812370563_9_9,532172400)", + "equals(D_812370563_9_9,754745617)", + "equals(D_812370563_9_9,665036297)", + "equals(D_812370563_9_9,200837530)", + "equals(D_812370563_9_9,990319383)", + "equals(D_812370563_9_9,487917585)", + "equals(D_812370563_9_9,603181162)", + "equals(D_812370563_9_9,482225200)", + "equals(D_812370563_9_9,295976386)", + "equals(D_812370563_9_9,764891959)", + "equals(D_812370563_9_9,248374037)", + "equals(D_812370563_9_9,139822395)", + "equals(D_812370563_9_9,723614811)", + "valueLength('D_933110091_9_9')>0", + "doesNotExist('D_933110091_9_9')", + "selectionCount(\"D_812370563_9_9\",true)>0 or valueLength(\"D_933110091_9_9\")>0", + "valueLength('D_714001034_9_9')>0", + "equals(D_887697329_9_9,178420302)", + "allExist('D_473529484_9_9','D_812370563_9_9')", + "equals(D_473529484_9_9,353358909)", + "equals(D_473529484_9_9,104430631)", + "equals(D_873968217_9_9,709650750)", + "equals(D_873968217_9_9,810290359)", + "equals(D_873968217_9_9,509607548)", + "equals(D_873968217_9_9,784922042)", + "equals(D_718867914_9_9,104430631)", + "equals(D_718867914_9_9,353358909)", + "equals(D_718867914_9_9,178420302)", + "equals(isNotDefined(D_714001034_10_10,false),false)", + "doesNotEqual(isNotDefined(D_714001034_10_10,false),false)", + "equals(D_887697329_10_10,654207589)", + "equals(D_887697329_10_10,536341288)", + "and(doesNotEqual(D_887697329_10_10,654207589),doesNotEqual(D_887697329_10_10,536341288))", + "equals(D_418392907_10_10,353358909)", + "doesNotEqual(D_418392907_10_10,353358909)", + "equals(D_812370563_10_10,939782495)", + "equals(D_812370563_10_10,135725957)", + "equals(D_812370563_10_10,518416174)", + "equals(D_812370563_10_10,847945207)", + "equals(D_812370563_10_10,283025574)", + "equals(D_812370563_10_10,942970912)", + "equals(D_812370563_10_10,596122041)", + "equals(D_812370563_10_10,489400183)", + "equals(D_812370563_10_10,863246236)", + "equals(D_812370563_10_10,607793249)", + "equals(D_812370563_10_10,532172400)", + "equals(D_812370563_10_10,754745617)", + "equals(D_812370563_10_10,665036297)", + "equals(D_812370563_10_10,200837530)", + "equals(D_812370563_10_10,990319383)", + "equals(D_812370563_10_10,487917585)", + "equals(D_812370563_10_10,603181162)", + "equals(D_812370563_10_10,482225200)", + "equals(D_812370563_10_10,295976386)", + "equals(D_812370563_10_10,764891959)", + "equals(D_812370563_10_10,248374037)", + "equals(D_812370563_10_10,139822395)", + "equals(D_812370563_10_10,723614811)", + "valueLength('D_933110091_10_10')>0", + "doesNotExist('D_933110091_10_10')", + "selectionCount(\"D_812370563_10_10\",true)>0 or valueLength(\"D_933110091_10_10\")>0", + "valueLength('D_714001034_10_10')>0", + "equals(D_887697329_10_10,178420302)", + "allExist('D_473529484_10_10','D_812370563_10_10')", + "equals(D_473529484_10_10,353358909)", + "equals(D_473529484_10_10,104430631)", + "equals(D_873968217_10_10,709650750)", + "equals(D_873968217_10_10,810290359)", + "equals(D_873968217_10_10,509607548)", + "equals(D_873968217_10_10,784922042)", + "equals(D_718867914_10_10,104430631)", + "equals(D_718867914_10_10,353358909)", + "equals(D_718867914_10_10,178420302)", + "equals(isNotDefined(D_714001034_11_11,false),false)", + "doesNotEqual(isNotDefined(D_714001034_11_11,false),false)", + "equals(D_887697329_11_11,654207589)", + "equals(D_887697329_11_11,536341288)", + "and(doesNotEqual(D_887697329_11_11,654207589),doesNotEqual(D_887697329_11_11,536341288))", + "equals(D_418392907_11_11,353358909)", + "doesNotEqual(D_418392907_11_11,353358909)", + "equals(D_812370563_11_11,939782495)", + "equals(D_812370563_11_11,135725957)", + "equals(D_812370563_11_11,518416174)", + "equals(D_812370563_11_11,847945207)", + "equals(D_812370563_11_11,283025574)", + "equals(D_812370563_11_11,942970912)", + "equals(D_812370563_11_11,596122041)", + "equals(D_812370563_11_11,489400183)", + "equals(D_812370563_11_11,863246236)", + "equals(D_812370563_11_11,607793249)", + "equals(D_812370563_11_11,532172400)", + "equals(D_812370563_11_11,754745617)", + "equals(D_812370563_11_11,665036297)", + "equals(D_812370563_11_11,200837530)", + "equals(D_812370563_11_11,990319383)", + "equals(D_812370563_11_11,487917585)", + "equals(D_812370563_11_11,603181162)", + "equals(D_812370563_11_11,482225200)", + "equals(D_812370563_11_11,295976386)", + "equals(D_812370563_11_11,764891959)", + "equals(D_812370563_11_11,248374037)", + "equals(D_812370563_11_11,139822395)", + "equals(D_812370563_11_11,723614811)", + "valueLength('D_933110091_11_11')>0", + "doesNotExist('D_933110091_11_11')", + "selectionCount(\"D_812370563_11_11\",true)>0 or valueLength(\"D_933110091_11_11\")>0", + "valueLength('D_714001034_11_11')>0", + "equals(D_887697329_11_11,178420302)", + "allExist('D_473529484_11_11','D_812370563_11_11')", + "equals(D_473529484_11_11,353358909)", + "equals(D_473529484_11_11,104430631)", + "equals(D_873968217_11_11,709650750)", + "equals(D_873968217_11_11,810290359)", + "equals(D_873968217_11_11,509607548)", + "equals(D_873968217_11_11,784922042)", + "equals(D_718867914_11_11,104430631)", + "equals(D_718867914_11_11,353358909)", + "equals(D_718867914_11_11,178420302)", + "equals(isNotDefined(D_714001034_12_12,false),false)", + "doesNotEqual(isNotDefined(D_714001034_12_12,false),false)", + "equals(D_887697329_12_12,654207589)", + "equals(D_887697329_12_12,536341288)", + "and(doesNotEqual(D_887697329_12_12,654207589),doesNotEqual(D_887697329_12_12,536341288))", + "equals(D_418392907_12_12,353358909)", + "doesNotEqual(D_418392907_12_12,353358909)", + "equals(D_812370563_12_12,939782495)", + "equals(D_812370563_12_12,135725957)", + "equals(D_812370563_12_12,518416174)", + "equals(D_812370563_12_12,847945207)", + "equals(D_812370563_12_12,283025574)", + "equals(D_812370563_12_12,942970912)", + "equals(D_812370563_12_12,596122041)", + "equals(D_812370563_12_12,489400183)", + "equals(D_812370563_12_12,863246236)", + "equals(D_812370563_12_12,607793249)", + "equals(D_812370563_12_12,532172400)", + "equals(D_812370563_12_12,754745617)", + "equals(D_812370563_12_12,665036297)", + "equals(D_812370563_12_12,200837530)", + "equals(D_812370563_12_12,990319383)", + "equals(D_812370563_12_12,487917585)", + "equals(D_812370563_12_12,603181162)", + "equals(D_812370563_12_12,482225200)", + "equals(D_812370563_12_12,295976386)", + "equals(D_812370563_12_12,764891959)", + "equals(D_812370563_12_12,248374037)", + "equals(D_812370563_12_12,139822395)", + "equals(D_812370563_12_12,723614811)", + "valueLength('D_933110091_12_12')>0", + "doesNotExist('D_933110091_12_12')", + "selectionCount(\"D_812370563_12_12\",true)>0 or valueLength(\"D_933110091_12_12\")>0", + "valueLength('D_714001034_12_12')>0", + "equals(D_887697329_12_12,178420302)", + "allExist('D_473529484_12_12','D_812370563_12_12')", + "equals(D_473529484_12_12,353358909)", + "equals(D_473529484_12_12,104430631)", + "equals(D_873968217_12_12,709650750)", + "equals(D_873968217_12_12,810290359)", + "equals(D_873968217_12_12,509607548)", + "equals(D_873968217_12_12,784922042)", + "equals(D_718867914_12_12,104430631)", + "equals(D_718867914_12_12,353358909)", + "equals(D_718867914_12_12,178420302)", + "equals(isNotDefined(D_714001034_13_13,false),false)", + "doesNotEqual(isNotDefined(D_714001034_13_13,false),false)", + "equals(D_887697329_13_13,654207589)", + "equals(D_887697329_13_13,536341288)", + "and(doesNotEqual(D_887697329_13_13,654207589),doesNotEqual(D_887697329_13_13,536341288))", + "equals(D_418392907_13_13,353358909)", + "doesNotEqual(D_418392907_13_13,353358909)", + "equals(D_812370563_13_13,939782495)", + "equals(D_812370563_13_13,135725957)", + "equals(D_812370563_13_13,518416174)", + "equals(D_812370563_13_13,847945207)", + "equals(D_812370563_13_13,283025574)", + "equals(D_812370563_13_13,942970912)", + "equals(D_812370563_13_13,596122041)", + "equals(D_812370563_13_13,489400183)", + "equals(D_812370563_13_13,863246236)", + "equals(D_812370563_13_13,607793249)", + "equals(D_812370563_13_13,532172400)", + "equals(D_812370563_13_13,754745617)", + "equals(D_812370563_13_13,665036297)", + "equals(D_812370563_13_13,200837530)", + "equals(D_812370563_13_13,990319383)", + "equals(D_812370563_13_13,487917585)", + "equals(D_812370563_13_13,603181162)", + "equals(D_812370563_13_13,482225200)", + "equals(D_812370563_13_13,295976386)", + "equals(D_812370563_13_13,764891959)", + "equals(D_812370563_13_13,248374037)", + "equals(D_812370563_13_13,139822395)", + "equals(D_812370563_13_13,723614811)", + "valueLength('D_933110091_13_13')>0", + "doesNotExist('D_933110091_13_13')", + "selectionCount(\"D_812370563_13_13\",true)>0 or valueLength(\"D_933110091_13_13\")>0", + "valueLength('D_714001034_13_13')>0", + "equals(D_887697329_13_13,178420302)", + "allExist('D_473529484_13_13','D_812370563_13_13')", + "equals(D_473529484_13_13,353358909)", + "equals(D_473529484_13_13,104430631)", + "equals(D_873968217_13_13,709650750)", + "equals(D_873968217_13_13,810290359)", + "equals(D_873968217_13_13,509607548)", + "equals(D_873968217_13_13,784922042)", + "equals(D_718867914_13_13,104430631)", + "equals(D_718867914_13_13,353358909)", + "equals(D_718867914_13_13,178420302)", + "equals(isNotDefined(D_714001034_14_14,false),false)", + "doesNotEqual(isNotDefined(D_714001034_14_14,false),false)", + "equals(D_887697329_14_14,654207589)", + "equals(D_887697329_14_14,536341288)", + "and(doesNotEqual(D_887697329_14_14,654207589),doesNotEqual(D_887697329_14_14,536341288))", + "equals(D_418392907_14_14,353358909)", + "doesNotEqual(D_418392907_14_14,353358909)", + "equals(D_812370563_14_14,939782495)", + "equals(D_812370563_14_14,135725957)", + "equals(D_812370563_14_14,518416174)", + "equals(D_812370563_14_14,847945207)", + "equals(D_812370563_14_14,283025574)", + "equals(D_812370563_14_14,942970912)", + "equals(D_812370563_14_14,596122041)", + "equals(D_812370563_14_14,489400183)", + "equals(D_812370563_14_14,863246236)", + "equals(D_812370563_14_14,607793249)", + "equals(D_812370563_14_14,532172400)", + "equals(D_812370563_14_14,754745617)", + "equals(D_812370563_14_14,665036297)", + "equals(D_812370563_14_14,200837530)", + "equals(D_812370563_14_14,990319383)", + "equals(D_812370563_14_14,487917585)", + "equals(D_812370563_14_14,603181162)", + "equals(D_812370563_14_14,482225200)", + "equals(D_812370563_14_14,295976386)", + "equals(D_812370563_14_14,764891959)", + "equals(D_812370563_14_14,248374037)", + "equals(D_812370563_14_14,139822395)", + "equals(D_812370563_14_14,723614811)", + "valueLength('D_933110091_14_14')>0", + "doesNotExist('D_933110091_14_14')", + "selectionCount(\"D_812370563_14_14\",true)>0 or valueLength(\"D_933110091_14_14\")>0", + "valueLength('D_714001034_14_14')>0", + "equals(D_887697329_14_14,178420302)", + "allExist('D_473529484_14_14','D_812370563_14_14')", + "equals(D_473529484_14_14,353358909)", + "equals(D_473529484_14_14,104430631)", + "equals(D_873968217_14_14,709650750)", + "equals(D_873968217_14_14,810290359)", + "equals(D_873968217_14_14,509607548)", + "equals(D_873968217_14_14,784922042)", + "equals(D_718867914_14_14,104430631)", + "equals(D_718867914_14_14,353358909)", + "equals(D_718867914_14_14,178420302)", + "equals(isNotDefined(D_714001034_15_15,false),false)", + "doesNotEqual(isNotDefined(D_714001034_15_15,false),false)", + "equals(D_887697329_15_15,654207589)", + "equals(D_887697329_15_15,536341288)", + "and(doesNotEqual(D_887697329_15_15,654207589),doesNotEqual(D_887697329_15_15,536341288))", + "equals(D_418392907_15_15,353358909)", + "doesNotEqual(D_418392907_15_15,353358909)", + "equals(D_812370563_15_15,939782495)", + "equals(D_812370563_15_15,135725957)", + "equals(D_812370563_15_15,518416174)", + "equals(D_812370563_15_15,847945207)", + "equals(D_812370563_15_15,283025574)", + "equals(D_812370563_15_15,942970912)", + "equals(D_812370563_15_15,596122041)", + "equals(D_812370563_15_15,489400183)", + "equals(D_812370563_15_15,863246236)", + "equals(D_812370563_15_15,607793249)", + "equals(D_812370563_15_15,532172400)", + "equals(D_812370563_15_15,754745617)", + "equals(D_812370563_15_15,665036297)", + "equals(D_812370563_15_15,200837530)", + "equals(D_812370563_15_15,990319383)", + "equals(D_812370563_15_15,487917585)", + "equals(D_812370563_15_15,603181162)", + "equals(D_812370563_15_15,482225200)", + "equals(D_812370563_15_15,295976386)", + "equals(D_812370563_15_15,764891959)", + "equals(D_812370563_15_15,248374037)", + "equals(D_812370563_15_15,139822395)", + "equals(D_812370563_15_15,723614811)", + "valueLength('D_933110091_15_15')>0", + "doesNotExist('D_933110091_15_15')", + "selectionCount(\"D_812370563_15_15\",true)>0 or valueLength(\"D_933110091_15_15\")>0", + "valueLength('D_714001034_15_15')>0", + "equals(D_887697329_15_15,178420302)", + "allExist('D_473529484_15_15','D_812370563_15_15')", + "equals(D_473529484_15_15,353358909)", + "equals(D_473529484_15_15,104430631)", + "equals(D_873968217_15_15,709650750)", + "equals(D_873968217_15_15,810290359)", + "equals(D_873968217_15_15,509607548)", + "equals(D_873968217_15_15,784922042)", + "equals(D_718867914_15_15,104430631)", + "equals(D_718867914_15_15,353358909)", + "equals(D_718867914_15_15,178420302)", + "equals(isNotDefined(D_714001034_16_16,false),false)", + "doesNotEqual(isNotDefined(D_714001034_16_16,false),false)", + "equals(D_887697329_16_16,654207589)", + "equals(D_887697329_16_16,536341288)", + "and(doesNotEqual(D_887697329_16_16,654207589),doesNotEqual(D_887697329_16_16,536341288))", + "equals(D_418392907_16_16,353358909)", + "doesNotEqual(D_418392907_16_16,353358909)", + "equals(D_812370563_16_16,939782495)", + "equals(D_812370563_16_16,135725957)", + "equals(D_812370563_16_16,518416174)", + "equals(D_812370563_16_16,847945207)", + "equals(D_812370563_16_16,283025574)", + "equals(D_812370563_16_16,942970912)", + "equals(D_812370563_16_16,596122041)", + "equals(D_812370563_16_16,489400183)", + "equals(D_812370563_16_16,863246236)", + "equals(D_812370563_16_16,607793249)", + "equals(D_812370563_16_16,532172400)", + "equals(D_812370563_16_16,754745617)", + "equals(D_812370563_16_16,665036297)", + "equals(D_812370563_16_16,200837530)", + "equals(D_812370563_16_16,990319383)", + "equals(D_812370563_16_16,487917585)", + "equals(D_812370563_16_16,603181162)", + "equals(D_812370563_16_16,482225200)", + "equals(D_812370563_16_16,295976386)", + "equals(D_812370563_16_16,764891959)", + "equals(D_812370563_16_16,248374037)", + "equals(D_812370563_16_16,139822395)", + "equals(D_812370563_16_16,723614811)", + "valueLength('D_933110091_16_16')>0", + "doesNotExist('D_933110091_16_16')", + "selectionCount(\"D_812370563_16_16\",true)>0 or valueLength(\"D_933110091_16_16\")>0", + "valueLength('D_714001034_16_16')>0", + "equals(D_887697329_16_16,178420302)", + "allExist('D_473529484_16_16','D_812370563_16_16')", + "equals(D_473529484_16_16,353358909)", + "equals(D_473529484_16_16,104430631)", + "equals(D_873968217_16_16,709650750)", + "equals(D_873968217_16_16,810290359)", + "equals(D_873968217_16_16,509607548)", + "equals(D_873968217_16_16,784922042)", + "equals(D_718867914_16_16,104430631)", + "equals(D_718867914_16_16,353358909)", + "equals(D_718867914_16_16,178420302)", + "equals(isNotDefined(D_714001034_17_17,false),false)", + "doesNotEqual(isNotDefined(D_714001034_17_17,false),false)", + "equals(D_887697329_17_17,654207589)", + "equals(D_887697329_17_17,536341288)", + "and(doesNotEqual(D_887697329_17_17,654207589),doesNotEqual(D_887697329_17_17,536341288))", + "equals(D_418392907_17_17,353358909)", + "doesNotEqual(D_418392907_17_17,353358909)", + "equals(D_812370563_17_17,939782495)", + "equals(D_812370563_17_17,135725957)", + "equals(D_812370563_17_17,518416174)", + "equals(D_812370563_17_17,847945207)", + "equals(D_812370563_17_17,283025574)", + "equals(D_812370563_17_17,942970912)", + "equals(D_812370563_17_17,596122041)", + "equals(D_812370563_17_17,489400183)", + "equals(D_812370563_17_17,863246236)", + "equals(D_812370563_17_17,607793249)", + "equals(D_812370563_17_17,532172400)", + "equals(D_812370563_17_17,754745617)", + "equals(D_812370563_17_17,665036297)", + "equals(D_812370563_17_17,200837530)", + "equals(D_812370563_17_17,990319383)", + "equals(D_812370563_17_17,487917585)", + "equals(D_812370563_17_17,603181162)", + "equals(D_812370563_17_17,482225200)", + "equals(D_812370563_17_17,295976386)", + "equals(D_812370563_17_17,764891959)", + "equals(D_812370563_17_17,248374037)", + "equals(D_812370563_17_17,139822395)", + "equals(D_812370563_17_17,723614811)", + "valueLength('D_933110091_17_17')>0", + "doesNotExist('D_933110091_17_17')", + "selectionCount(\"D_812370563_17_17\",true)>0 or valueLength(\"D_933110091_17_17\")>0", + "valueLength('D_714001034_17_17')>0", + "equals(D_887697329_17_17,178420302)", + "allExist('D_473529484_17_17','D_812370563_17_17')", + "equals(D_473529484_17_17,353358909)", + "equals(D_473529484_17_17,104430631)", + "equals(D_873968217_17_17,709650750)", + "equals(D_873968217_17_17,810290359)", + "equals(D_873968217_17_17,509607548)", + "equals(D_873968217_17_17,784922042)", + "equals(D_718867914_17_17,104430631)", + "equals(D_718867914_17_17,353358909)", + "equals(D_718867914_17_17,178420302)", + "equals(isNotDefined(D_714001034_18_18,false),false)", + "doesNotEqual(isNotDefined(D_714001034_18_18,false),false)", + "equals(D_887697329_18_18,654207589)", + "equals(D_887697329_18_18,536341288)", + "and(doesNotEqual(D_887697329_18_18,654207589),doesNotEqual(D_887697329_18_18,536341288))", + "equals(D_418392907_18_18,353358909)", + "doesNotEqual(D_418392907_18_18,353358909)", + "equals(D_812370563_18_18,939782495)", + "equals(D_812370563_18_18,135725957)", + "equals(D_812370563_18_18,518416174)", + "equals(D_812370563_18_18,847945207)", + "equals(D_812370563_18_18,283025574)", + "equals(D_812370563_18_18,942970912)", + "equals(D_812370563_18_18,596122041)", + "equals(D_812370563_18_18,489400183)", + "equals(D_812370563_18_18,863246236)", + "equals(D_812370563_18_18,607793249)", + "equals(D_812370563_18_18,532172400)", + "equals(D_812370563_18_18,754745617)", + "equals(D_812370563_18_18,665036297)", + "equals(D_812370563_18_18,200837530)", + "equals(D_812370563_18_18,990319383)", + "equals(D_812370563_18_18,487917585)", + "equals(D_812370563_18_18,603181162)", + "equals(D_812370563_18_18,482225200)", + "equals(D_812370563_18_18,295976386)", + "equals(D_812370563_18_18,764891959)", + "equals(D_812370563_18_18,248374037)", + "equals(D_812370563_18_18,139822395)", + "equals(D_812370563_18_18,723614811)", + "valueLength('D_933110091_18_18')>0", + "doesNotExist('D_933110091_18_18')", + "selectionCount(\"D_812370563_18_18\",true)>0 or valueLength(\"D_933110091_18_18\")>0", + "valueLength('D_714001034_18_18')>0", + "equals(D_887697329_18_18,178420302)", + "allExist('D_473529484_18_18','D_812370563_18_18')", + "equals(D_473529484_18_18,353358909)", + "equals(D_473529484_18_18,104430631)", + "equals(D_873968217_18_18,709650750)", + "equals(D_873968217_18_18,810290359)", + "equals(D_873968217_18_18,509607548)", + "equals(D_873968217_18_18,784922042)", + "equals(D_718867914_18_18,104430631)", + "equals(D_718867914_18_18,353358909)", + "equals(D_718867914_18_18,178420302)", + "equals(isNotDefined(D_714001034_19_19,false),false)", + "doesNotEqual(isNotDefined(D_714001034_19_19,false),false)", + "equals(D_887697329_19_19,654207589)", + "equals(D_887697329_19_19,536341288)", + "and(doesNotEqual(D_887697329_19_19,654207589),doesNotEqual(D_887697329_19_19,536341288))", + "equals(D_418392907_19_19,353358909)", + "doesNotEqual(D_418392907_19_19,353358909)", + "equals(D_812370563_19_19,939782495)", + "equals(D_812370563_19_19,135725957)", + "equals(D_812370563_19_19,518416174)", + "equals(D_812370563_19_19,847945207)", + "equals(D_812370563_19_19,283025574)", + "equals(D_812370563_19_19,942970912)", + "equals(D_812370563_19_19,596122041)", + "equals(D_812370563_19_19,489400183)", + "equals(D_812370563_19_19,863246236)", + "equals(D_812370563_19_19,607793249)", + "equals(D_812370563_19_19,532172400)", + "equals(D_812370563_19_19,754745617)", + "equals(D_812370563_19_19,665036297)", + "equals(D_812370563_19_19,200837530)", + "equals(D_812370563_19_19,990319383)", + "equals(D_812370563_19_19,487917585)", + "equals(D_812370563_19_19,603181162)", + "equals(D_812370563_19_19,482225200)", + "equals(D_812370563_19_19,295976386)", + "equals(D_812370563_19_19,764891959)", + "equals(D_812370563_19_19,248374037)", + "equals(D_812370563_19_19,139822395)", + "equals(D_812370563_19_19,723614811)", + "valueLength('D_933110091_19_19')>0", + "doesNotExist('D_933110091_19_19')", + "selectionCount(\"D_812370563_19_19\",true)>0 or valueLength(\"D_933110091_19_19\")>0", + "valueLength('D_714001034_19_19')>0", + "equals(D_887697329_19_19,178420302)", + "allExist('D_473529484_19_19','D_812370563_19_19')", + "equals(D_473529484_19_19,353358909)", + "equals(D_473529484_19_19,104430631)", + "equals(D_873968217_19_19,709650750)", + "equals(D_873968217_19_19,810290359)", + "equals(D_873968217_19_19,509607548)", + "equals(D_873968217_19_19,784922042)", + "equals(D_718867914_19_19,104430631)", + "equals(D_718867914_19_19,353358909)", + "equals(D_718867914_19_19,178420302)", + "equals(isNotDefined(D_714001034_20_20,false),false)", + "doesNotEqual(isNotDefined(D_714001034_20_20,false),false)", + "equals(D_887697329_20_20,654207589)", + "equals(D_887697329_20_20,536341288)", + "and(doesNotEqual(D_887697329_20_20,654207589),doesNotEqual(D_887697329_20_20,536341288))", + "equals(D_418392907_20_20,353358909)", + "doesNotEqual(D_418392907_20_20,353358909)", + "equals(D_812370563_20_20,939782495)", + "equals(D_812370563_20_20,135725957)", + "equals(D_812370563_20_20,518416174)", + "equals(D_812370563_20_20,847945207)", + "equals(D_812370563_20_20,283025574)", + "equals(D_812370563_20_20,942970912)", + "equals(D_812370563_20_20,596122041)", + "equals(D_812370563_20_20,489400183)", + "equals(D_812370563_20_20,863246236)", + "equals(D_812370563_20_20,607793249)", + "equals(D_812370563_20_20,532172400)", + "equals(D_812370563_20_20,754745617)", + "equals(D_812370563_20_20,665036297)", + "equals(D_812370563_20_20,200837530)", + "equals(D_812370563_20_20,990319383)", + "equals(D_812370563_20_20,487917585)", + "equals(D_812370563_20_20,603181162)", + "equals(D_812370563_20_20,482225200)", + "equals(D_812370563_20_20,295976386)", + "equals(D_812370563_20_20,764891959)", + "equals(D_812370563_20_20,248374037)", + "equals(D_812370563_20_20,139822395)", + "equals(D_812370563_20_20,723614811)", + "valueLength('D_933110091_20_20')>0", + "doesNotExist('D_933110091_20_20')", + "selectionCount(\"D_812370563_20_20\",true)>0 or valueLength(\"D_933110091_20_20\")>0", + "valueLength('D_714001034_20_20')>0", + "equals(D_887697329_20_20,178420302)", + "allExist('D_473529484_20_20','D_812370563_20_20')", + "equals(D_473529484_20_20,353358909)", + "equals(D_473529484_20_20,104430631)", + "equals(D_873968217_20_20,709650750)", + "equals(D_873968217_20_20,810290359)", + "equals(D_873968217_20_20,509607548)", + "equals(D_873968217_20_20,784922042)", + "equals(D_718867914_20_20,104430631)", + "equals(D_718867914_20_20,353358909)", + "equals(D_718867914_20_20,178420302)", + "equals(isNotDefined(D_714001034_21_21,false),false)", + "doesNotEqual(isNotDefined(D_714001034_21_21,false),false)", + "equals(D_887697329_21_21,654207589)", + "equals(D_887697329_21_21,536341288)", + "and(doesNotEqual(D_887697329_21_21,654207589),doesNotEqual(D_887697329_21_21,536341288))", + "equals(D_418392907_21_21,353358909)", + "doesNotEqual(D_418392907_21_21,353358909)", + "equals(D_812370563_21_21,939782495)", + "equals(D_812370563_21_21,135725957)", + "equals(D_812370563_21_21,518416174)", + "equals(D_812370563_21_21,847945207)", + "equals(D_812370563_21_21,283025574)", + "equals(D_812370563_21_21,942970912)", + "equals(D_812370563_21_21,596122041)", + "equals(D_812370563_21_21,489400183)", + "equals(D_812370563_21_21,863246236)", + "equals(D_812370563_21_21,607793249)", + "equals(D_812370563_21_21,532172400)", + "equals(D_812370563_21_21,754745617)", + "equals(D_812370563_21_21,665036297)", + "equals(D_812370563_21_21,200837530)", + "equals(D_812370563_21_21,990319383)", + "equals(D_812370563_21_21,487917585)", + "equals(D_812370563_21_21,603181162)", + "equals(D_812370563_21_21,482225200)", + "equals(D_812370563_21_21,295976386)", + "equals(D_812370563_21_21,764891959)", + "equals(D_812370563_21_21,248374037)", + "equals(D_812370563_21_21,139822395)", + "equals(D_812370563_21_21,723614811)", + "valueLength('D_933110091_21_21')>0", + "doesNotExist('D_933110091_21_21')", + "selectionCount(\"D_812370563_21_21\",true)>0 or valueLength(\"D_933110091_21_21\")>0", + "valueLength('D_714001034_21_21')>0", + "equals(D_887697329_21_21,178420302)", + "allExist('D_473529484_21_21','D_812370563_21_21')", + "equals(D_473529484_21_21,353358909)", + "equals(D_473529484_21_21,104430631)", + "equals(D_873968217_21_21,709650750)", + "equals(D_873968217_21_21,810290359)", + "equals(D_873968217_21_21,509607548)", + "equals(D_873968217_21_21,784922042)", + "equals(D_718867914_21_21,104430631)", + "equals(D_718867914_21_21,353358909)", + "equals(D_718867914_21_21,178420302)", + "equals(isNotDefined(D_714001034_22_22,false),false)", + "doesNotEqual(isNotDefined(D_714001034_22_22,false),false)", + "equals(D_887697329_22_22,654207589)", + "equals(D_887697329_22_22,536341288)", + "and(doesNotEqual(D_887697329_22_22,654207589),doesNotEqual(D_887697329_22_22,536341288))", + "equals(D_418392907_22_22,353358909)", + "doesNotEqual(D_418392907_22_22,353358909)", + "equals(D_812370563_22_22,939782495)", + "equals(D_812370563_22_22,135725957)", + "equals(D_812370563_22_22,518416174)", + "equals(D_812370563_22_22,847945207)", + "equals(D_812370563_22_22,283025574)", + "equals(D_812370563_22_22,942970912)", + "equals(D_812370563_22_22,596122041)", + "equals(D_812370563_22_22,489400183)", + "equals(D_812370563_22_22,863246236)", + "equals(D_812370563_22_22,607793249)", + "equals(D_812370563_22_22,532172400)", + "equals(D_812370563_22_22,754745617)", + "equals(D_812370563_22_22,665036297)", + "equals(D_812370563_22_22,200837530)", + "equals(D_812370563_22_22,990319383)", + "equals(D_812370563_22_22,487917585)", + "equals(D_812370563_22_22,603181162)", + "equals(D_812370563_22_22,482225200)", + "equals(D_812370563_22_22,295976386)", + "equals(D_812370563_22_22,764891959)", + "equals(D_812370563_22_22,248374037)", + "equals(D_812370563_22_22,139822395)", + "equals(D_812370563_22_22,723614811)", + "valueLength('D_933110091_22_22')>0", + "doesNotExist('D_933110091_22_22')", + "selectionCount(\"D_812370563_22_22\",true)>0 or valueLength(\"D_933110091_22_22\")>0", + "valueLength('D_714001034_22_22')>0", + "equals(D_887697329_22_22,178420302)", + "allExist('D_473529484_22_22','D_812370563_22_22')", + "equals(D_473529484_22_22,353358909)", + "equals(D_473529484_22_22,104430631)", + "equals(D_873968217_22_22,709650750)", + "equals(D_873968217_22_22,810290359)", + "equals(D_873968217_22_22,509607548)", + "equals(D_873968217_22_22,784922042)", + "equals(D_718867914_22_22,104430631)", + "equals(D_718867914_22_22,353358909)", + "equals(D_718867914_22_22,178420302)", + "equals(isNotDefined(D_714001034_23_23,false),false)", + "doesNotEqual(isNotDefined(D_714001034_23_23,false),false)", + "equals(D_887697329_23_23,654207589)", + "equals(D_887697329_23_23,536341288)", + "and(doesNotEqual(D_887697329_23_23,654207589),doesNotEqual(D_887697329_23_23,536341288))", + "equals(D_418392907_23_23,353358909)", + "doesNotEqual(D_418392907_23_23,353358909)", + "equals(D_812370563_23_23,939782495)", + "equals(D_812370563_23_23,135725957)", + "equals(D_812370563_23_23,518416174)", + "equals(D_812370563_23_23,847945207)", + "equals(D_812370563_23_23,283025574)", + "equals(D_812370563_23_23,942970912)", + "equals(D_812370563_23_23,596122041)", + "equals(D_812370563_23_23,489400183)", + "equals(D_812370563_23_23,863246236)", + "equals(D_812370563_23_23,607793249)", + "equals(D_812370563_23_23,532172400)", + "equals(D_812370563_23_23,754745617)", + "equals(D_812370563_23_23,665036297)", + "equals(D_812370563_23_23,200837530)", + "equals(D_812370563_23_23,990319383)", + "equals(D_812370563_23_23,487917585)", + "equals(D_812370563_23_23,603181162)", + "equals(D_812370563_23_23,482225200)", + "equals(D_812370563_23_23,295976386)", + "equals(D_812370563_23_23,764891959)", + "equals(D_812370563_23_23,248374037)", + "equals(D_812370563_23_23,139822395)", + "equals(D_812370563_23_23,723614811)", + "valueLength('D_933110091_23_23')>0", + "doesNotExist('D_933110091_23_23')", + "selectionCount(\"D_812370563_23_23\",true)>0 or valueLength(\"D_933110091_23_23\")>0", + "valueLength('D_714001034_23_23')>0", + "equals(D_887697329_23_23,178420302)", + "allExist('D_473529484_23_23','D_812370563_23_23')", + "equals(D_473529484_23_23,353358909)", + "equals(D_473529484_23_23,104430631)", + "equals(D_873968217_23_23,709650750)", + "equals(D_873968217_23_23,810290359)", + "equals(D_873968217_23_23,509607548)", + "equals(D_873968217_23_23,784922042)", + "equals(D_718867914_23_23,104430631)", + "equals(D_718867914_23_23,353358909)", + "equals(D_718867914_23_23,178420302)", + "equals(isNotDefined(D_714001034_24_24,false),false)", + "doesNotEqual(isNotDefined(D_714001034_24_24,false),false)", + "equals(D_887697329_24_24,654207589)", + "equals(D_887697329_24_24,536341288)", + "and(doesNotEqual(D_887697329_24_24,654207589),doesNotEqual(D_887697329_24_24,536341288))", + "equals(D_418392907_24_24,353358909)", + "doesNotEqual(D_418392907_24_24,353358909)", + "equals(D_812370563_24_24,939782495)", + "equals(D_812370563_24_24,135725957)", + "equals(D_812370563_24_24,518416174)", + "equals(D_812370563_24_24,847945207)", + "equals(D_812370563_24_24,283025574)", + "equals(D_812370563_24_24,942970912)", + "equals(D_812370563_24_24,596122041)", + "equals(D_812370563_24_24,489400183)", + "equals(D_812370563_24_24,863246236)", + "equals(D_812370563_24_24,607793249)", + "equals(D_812370563_24_24,532172400)", + "equals(D_812370563_24_24,754745617)", + "equals(D_812370563_24_24,665036297)", + "equals(D_812370563_24_24,200837530)", + "equals(D_812370563_24_24,990319383)", + "equals(D_812370563_24_24,487917585)", + "equals(D_812370563_24_24,603181162)", + "equals(D_812370563_24_24,482225200)", + "equals(D_812370563_24_24,295976386)", + "equals(D_812370563_24_24,764891959)", + "equals(D_812370563_24_24,248374037)", + "equals(D_812370563_24_24,139822395)", + "equals(D_812370563_24_24,723614811)", + "valueLength('D_933110091_24_24')>0", + "doesNotExist('D_933110091_24_24')", + "selectionCount(\"D_812370563_24_24\",true)>0 or valueLength(\"D_933110091_24_24\")>0", + "valueLength('D_714001034_24_24')>0", + "equals(D_887697329_24_24,178420302)", + "allExist('D_473529484_24_24','D_812370563_24_24')", + "equals(D_473529484_24_24,353358909)", + "equals(D_473529484_24_24,104430631)", + "equals(D_873968217_24_24,709650750)", + "equals(D_873968217_24_24,810290359)", + "equals(D_873968217_24_24,509607548)", + "equals(D_873968217_24_24,784922042)", + "equals(D_718867914_24_24,104430631)", + "equals(D_718867914_24_24,353358909)", + "equals(D_718867914_24_24,178420302)", + "equals(isNotDefined(D_714001034_25_25,false),false)", + "doesNotEqual(isNotDefined(D_714001034_25_25,false),false)", + "equals(D_887697329_25_25,654207589)", + "equals(D_887697329_25_25,536341288)", + "and(doesNotEqual(D_887697329_25_25,654207589),doesNotEqual(D_887697329_25_25,536341288))", + "equals(D_418392907_25_25,353358909)", + "doesNotEqual(D_418392907_25_25,353358909)", + "equals(D_812370563_25_25,939782495)", + "equals(D_812370563_25_25,135725957)", + "equals(D_812370563_25_25,518416174)", + "equals(D_812370563_25_25,847945207)", + "equals(D_812370563_25_25,283025574)", + "equals(D_812370563_25_25,942970912)", + "equals(D_812370563_25_25,596122041)", + "equals(D_812370563_25_25,489400183)", + "equals(D_812370563_25_25,863246236)", + "equals(D_812370563_25_25,607793249)", + "equals(D_812370563_25_25,532172400)", + "equals(D_812370563_25_25,754745617)", + "equals(D_812370563_25_25,665036297)", + "equals(D_812370563_25_25,200837530)", + "equals(D_812370563_25_25,990319383)", + "equals(D_812370563_25_25,487917585)", + "equals(D_812370563_25_25,603181162)", + "equals(D_812370563_25_25,482225200)", + "equals(D_812370563_25_25,295976386)", + "equals(D_812370563_25_25,764891959)", + "equals(D_812370563_25_25,248374037)", + "equals(D_812370563_25_25,139822395)", + "equals(D_812370563_25_25,723614811)", + "valueLength('D_933110091_25_25')>0", + "doesNotExist('D_933110091_25_25')", + "selectionCount(\"D_812370563_25_25\",true)>0 or valueLength(\"D_933110091_25_25\")>0", + "valueLength('D_714001034_25_25')>0", + "equals(D_887697329_25_25,178420302)", + "allExist('D_473529484_25_25','D_812370563_25_25')", + "equals(D_473529484_25_25,353358909)", + "equals(D_473529484_25_25,104430631)", + "equals(D_873968217_25_25,709650750)", + "equals(D_873968217_25_25,810290359)", + "equals(D_873968217_25_25,509607548)", + "equals(D_873968217_25_25,784922042)", + "equals(D_718867914_25_25,104430631)", + "equals(D_718867914_25_25,353358909)", + "equals(D_718867914_25_25,178420302)" + ], + "sitesByScope": { + "element": 5, + "inline": 4486, + "question": 1400, + "response": 12 + }, + "sitesByAttribute": { + "displayif": 5903 + } + }, + "grids": [], + "loops": [ + { + "loopIndex": "1", + "loopMaxQuestionIds": [ + "D_694265648" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 218, + 253, + 288, + 323, + 358, + 393, + 428, + 463, + 498, + 533, + 568, + 603, + 638, + 673, + 708, + 743, + 778, + 813, + 848, + 883, + 918, + 953, + 988, + 1023, + 1058 + ], + "boundaryIndex": 1093 + }, + { + "loopIndex": "2", + "loopMaxQuestionIds": [ + "D_446999144" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 1097, + 1132, + 1167, + 1202, + 1237, + 1272, + 1307, + 1342, + 1377, + 1412, + 1447, + 1482, + 1517, + 1552, + 1587, + 1622, + 1657, + 1692, + 1727, + 1762, + 1797, + 1832, + 1867, + 1902, + 1937 + ], + "boundaryIndex": 1972 + } + ], + "unresolvedTargets": [], + "asyncQuestionIds": [ + "D_279637054", + "D_761310265" + ], + "counts": { + "authoredMarkerCount": 316, + "processorQuestionCount": 1998, + "processedQuestionCount": 1998, + "renderedFormCount": 1998, + "controlCount": 11726, + "responseControlCount": 5610, + "explicitTransitionCount": 1885, + "sequentialAdjacencyCount": 1997, + "resolvedExplicitTransitionCount": 1885, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 5903, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 50, + "loopDefinitionCount": 2, + "loopExpandedQuestionCount": 1750, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 2505 + } + }, + { + "schemaVersion": 1, + "module": "module1", + "locale": "es", + "language": "es", + "path": "prod/module1Spanish.txt", + "sha256": "f7a768ede6036e68742ea7d0bea3f0debc3f30aa4ab51774b637a9fbbe9e1d2e", + "questName": "D_726699695_V2", + "version": "4.0", + "authoredMarkerCount": 315, + "runtimeQuestionIds": [ + "INTROM1", + "INTROBAC", + "SECTION1", + "D_783167257?", + "RACEETHINTRO", + "D_384191091?", + "D_362270886?", + "D_525535977?", + "D_976808005?", + "D_308014437?", + "D_351657815?", + "D_115616118?", + "D_797626610?", + "D_588212264?", + "D_407056417?", + "D_750420077!", + "INTROMH", + "D_537153788?", + "D_508846529?", + "D_904550680?", + "D_167101091?", + "D_965917116?", + "D_929240175?", + "D_836712013?", + "D_836890480?", + "D_624479779?", + "D_337278854?", + "D_681229479?", + "D_660358706?", + "D_884793537?", + "D_460062034?", + "D_110652436?", + "D_894259747?", + "D_448722126?", + "D_201449164?", + "D_436333358?", + "D_180961306?", + "D_554782332?", + "D_409622468?", + "D_448476881?", + "D_459764934?", + "D_374697037?", + "D_580911251?", + "D_190347832?", + "D_624777141?", + "D_980403315?", + "D_936039586?", + "D_430472084?", + "D_900541533?", + "D_139655599?", + "D_494032093?", + "D_301679110?", + "D_810918716?", + "D_874046190?", + "D_989016875?", + "D_878094302?", + "D_543728565?", + "D_173101988?", + "D_245861186?", + "D_420423416?", + "INTROSTD", + "D_874709643?", + "D_915230886?", + "D_530548878?", + "D_469947273?", + "D_685735916?", + "D_954405492?", + "D_103397024?", + "D_931470797?", + "D_922524563?", + "D_978485677?", + "D_523188839?", + "D_725626004?", + "D_846786840?", + "D_423547108?", + "D_266847650?", + "D_852898339?", + "D_467061940?", + "D_619481697?", + "D_134642404?", + "D_219956652?", + "D_852236900?", + "DEPRESSINTRO", + "D_347860896?", + "D_301414575?", + "INTROSURG", + "D_624179836?", + "D_367884741?", + "D_178353079?", + "D_550075233?", + "D_927516732?", + "D_552788665?", + "D_439736294?", + "D_216506024?", + "D_860920332?", + "D_986613440?", + "D_517307064?", + "D_477690298?", + "D_176453768?", + "D_145786416?", + "D_287605131?", + "D_701157499?", + "D_428639167?", + "D_282355641?", + "D_539301647?", + "D_579225381?", + "D_891214661?", + "D_150352141?", + "D_122887481?", + "D_378892977?", + "D_534007917?", + "D_224791140?", + "D_752636038?", + "D_518750011?", + "D_946504570?", + "D_275770221?", + "D_107060069?", + "D_882152987?", + "D_527057404?", + "D_453252072?", + "D_795940097?", + "D_406011084?", + "D_593017220?", + "D_875208305?", + "D_323512813?", + "D_338924834?", + "D_952682839?", + "D_746012894?", + "D_114314839?", + "D_677262300?", + "D_650399623?", + "D_820324171?", + "D_724181652?", + "D_912857732?", + "D_808806810?", + "D_207025341?", + "D_803129396?", + "D_827393644?", + "D_183572295?", + "D_630675760?", + "D_837402132?", + "D_431628922?", + "D_848580651?", + "D_207494582?", + "D_936904328?", + "D_365851428?", + "D_206319592?", + "D_769668224?", + "D_814664694?", + "D_109544008?", + "D_186831207?", + "D_283634623?", + "D_164752169?", + "D_512167179?", + "D_509933065?", + "D_967093163?", + "FAMHISTINTRO", + "D_535621923?", + "D_992987417?", + "MOM", + "D_170440011?", + "D_354326265?", + "D_422714611?", + "D_276353712?", + "D_814510313?", + "D_259397450?", + "D_528753070?", + "D_683981980?", + "D_402548942?", + "D_247198016?", + "D_891925519?", + "D_317093647?", + "D_684692228?", + "D_671347092?", + "D_875221479?", + "D_186170949?", + "D_726451917?", + "D_213545903?", + "D_765903702?", + "D_773974223?", + "D_433604862?", + "D_521369040?", + "D_497311092?", + "D_625249910?", + "D_838564850?", + "D_633764113?", + "D_882263738?", + "D_671308090?", + "D_367374606?", + "D_178774803?", + "D_628078826?", + "D_659784914?", + "D_173240848?", + "D_345146692?", + "D_243443318?", + "D_610382315?", + "D_135519371?", + "D_785019074?", + "D_152885579?", + "D_692910565?", + "D_522464057?", + "D_808655074?", + "D_659627058?", + "D_370198527?", + "D_291855684?", + "D_413536735?", + "D_210325948?", + "D_193297280?", + "D_121502359?", + "D_489402657?", + "D_727260639?", + "D_359291056?", + "D_968841976?", + "D_864981804?", + "D_499434567?", + "SIB", + "D_694265648!", + "SIBCONFIRM", + "D_406098499_1_1?", + "D_579563781_1_1?", + "D_807431780_1_1?", + "D_589588769_1_1?", + "D_890637099_1_1?", + "D_869387390_1_1?", + "D_537137982_1_1?", + "D_607773106_1_1?", + "D_578895128_1_1?", + "D_384881609_1_1?", + "D_483975329_1_1?", + "D_570279754_1_1?", + "D_907590067_1_1?", + "D_860112841_1_1?", + "D_158354252_1_1?", + "D_654594205_1_1?", + "D_550722030_1_1?", + "D_142912472_1_1?", + "D_158409298_1_1?", + "D_529744595_1_1?", + "D_315987564_1_1?", + "D_852278004_1_1?", + "D_391972881_1_1?", + "D_259089008_1_1?", + "D_209771602_1_1?", + "D_682651189_1_1?", + "D_750994269_1_1?", + "D_700889863_1_1?", + "D_990114799_1_1?", + "D_195363361_1_1?", + "D_216840563_1_1?", + "D_514034680_1_1?", + "D_247160067_1_1?", + "D_312545873_1_1?", + "SIBSUM_1_1", + "D_406098499_2_2?", + "D_579563781_2_2?", + "D_807431780_2_2?", + "D_589588769_2_2?", + "D_890637099_2_2?", + "D_869387390_2_2?", + "D_537137982_2_2?", + "D_607773106_2_2?", + "D_578895128_2_2?", + "D_384881609_2_2?", + "D_483975329_2_2?", + "D_570279754_2_2?", + "D_907590067_2_2?", + "D_860112841_2_2?", + "D_158354252_2_2?", + "D_654594205_2_2?", + "D_550722030_2_2?", + "D_142912472_2_2?", + "D_158409298_2_2?", + "D_529744595_2_2?", + "D_315987564_2_2?", + "D_852278004_2_2?", + "D_391972881_2_2?", + "D_259089008_2_2?", + "D_209771602_2_2?", + "D_682651189_2_2?", + "D_750994269_2_2?", + "D_700889863_2_2?", + "D_990114799_2_2?", + "D_195363361_2_2?", + "D_216840563_2_2?", + "D_514034680_2_2?", + "D_247160067_2_2?", + "D_312545873_2_2?", + "SIBSUM_2_2", + "D_406098499_3_3?", + "D_579563781_3_3?", + "D_807431780_3_3?", + "D_589588769_3_3?", + "D_890637099_3_3?", + "D_869387390_3_3?", + "D_537137982_3_3?", + "D_607773106_3_3?", + "D_578895128_3_3?", + "D_384881609_3_3?", + "D_483975329_3_3?", + "D_570279754_3_3?", + "D_907590067_3_3?", + "D_860112841_3_3?", + "D_158354252_3_3?", + "D_654594205_3_3?", + "D_550722030_3_3?", + "D_142912472_3_3?", + "D_158409298_3_3?", + "D_529744595_3_3?", + "D_315987564_3_3?", + "D_852278004_3_3?", + "D_391972881_3_3?", + "D_259089008_3_3?", + "D_209771602_3_3?", + "D_682651189_3_3?", + "D_750994269_3_3?", + "D_700889863_3_3?", + "D_990114799_3_3?", + "D_195363361_3_3?", + "D_216840563_3_3?", + "D_514034680_3_3?", + "D_247160067_3_3?", + "D_312545873_3_3?", + "SIBSUM_3_3", + "D_406098499_4_4?", + "D_579563781_4_4?", + "D_807431780_4_4?", + "D_589588769_4_4?", + "D_890637099_4_4?", + "D_869387390_4_4?", + "D_537137982_4_4?", + "D_607773106_4_4?", + "D_578895128_4_4?", + "D_384881609_4_4?", + "D_483975329_4_4?", + "D_570279754_4_4?", + "D_907590067_4_4?", + "D_860112841_4_4?", + "D_158354252_4_4?", + "D_654594205_4_4?", + "D_550722030_4_4?", + "D_142912472_4_4?", + "D_158409298_4_4?", + "D_529744595_4_4?", + "D_315987564_4_4?", + "D_852278004_4_4?", + "D_391972881_4_4?", + "D_259089008_4_4?", + "D_209771602_4_4?", + "D_682651189_4_4?", + "D_750994269_4_4?", + "D_700889863_4_4?", + "D_990114799_4_4?", + "D_195363361_4_4?", + "D_216840563_4_4?", + "D_514034680_4_4?", + "D_247160067_4_4?", + "D_312545873_4_4?", + "SIBSUM_4_4", + "D_406098499_5_5?", + "D_579563781_5_5?", + "D_807431780_5_5?", + "D_589588769_5_5?", + "D_890637099_5_5?", + "D_869387390_5_5?", + "D_537137982_5_5?", + "D_607773106_5_5?", + "D_578895128_5_5?", + "D_384881609_5_5?", + "D_483975329_5_5?", + "D_570279754_5_5?", + "D_907590067_5_5?", + "D_860112841_5_5?", + "D_158354252_5_5?", + "D_654594205_5_5?", + "D_550722030_5_5?", + "D_142912472_5_5?", + "D_158409298_5_5?", + "D_529744595_5_5?", + "D_315987564_5_5?", + "D_852278004_5_5?", + "D_391972881_5_5?", + "D_259089008_5_5?", + "D_209771602_5_5?", + "D_682651189_5_5?", + "D_750994269_5_5?", + "D_700889863_5_5?", + "D_990114799_5_5?", + "D_195363361_5_5?", + "D_216840563_5_5?", + "D_514034680_5_5?", + "D_247160067_5_5?", + "D_312545873_5_5?", + "SIBSUM_5_5", + "D_406098499_6_6?", + "D_579563781_6_6?", + "D_807431780_6_6?", + "D_589588769_6_6?", + "D_890637099_6_6?", + "D_869387390_6_6?", + "D_537137982_6_6?", + "D_607773106_6_6?", + "D_578895128_6_6?", + "D_384881609_6_6?", + "D_483975329_6_6?", + "D_570279754_6_6?", + "D_907590067_6_6?", + "D_860112841_6_6?", + "D_158354252_6_6?", + "D_654594205_6_6?", + "D_550722030_6_6?", + "D_142912472_6_6?", + "D_158409298_6_6?", + "D_529744595_6_6?", + "D_315987564_6_6?", + "D_852278004_6_6?", + "D_391972881_6_6?", + "D_259089008_6_6?", + "D_209771602_6_6?", + "D_682651189_6_6?", + "D_750994269_6_6?", + "D_700889863_6_6?", + "D_990114799_6_6?", + "D_195363361_6_6?", + "D_216840563_6_6?", + "D_514034680_6_6?", + "D_247160067_6_6?", + "D_312545873_6_6?", + "SIBSUM_6_6", + "D_406098499_7_7?", + "D_579563781_7_7?", + "D_807431780_7_7?", + "D_589588769_7_7?", + "D_890637099_7_7?", + "D_869387390_7_7?", + "D_537137982_7_7?", + "D_607773106_7_7?", + "D_578895128_7_7?", + "D_384881609_7_7?", + "D_483975329_7_7?", + "D_570279754_7_7?", + "D_907590067_7_7?", + "D_860112841_7_7?", + "D_158354252_7_7?", + "D_654594205_7_7?", + "D_550722030_7_7?", + "D_142912472_7_7?", + "D_158409298_7_7?", + "D_529744595_7_7?", + "D_315987564_7_7?", + "D_852278004_7_7?", + "D_391972881_7_7?", + "D_259089008_7_7?", + "D_209771602_7_7?", + "D_682651189_7_7?", + "D_750994269_7_7?", + "D_700889863_7_7?", + "D_990114799_7_7?", + "D_195363361_7_7?", + "D_216840563_7_7?", + "D_514034680_7_7?", + "D_247160067_7_7?", + "D_312545873_7_7?", + "SIBSUM_7_7", + "D_406098499_8_8?", + "D_579563781_8_8?", + "D_807431780_8_8?", + "D_589588769_8_8?", + "D_890637099_8_8?", + "D_869387390_8_8?", + "D_537137982_8_8?", + "D_607773106_8_8?", + "D_578895128_8_8?", + "D_384881609_8_8?", + "D_483975329_8_8?", + "D_570279754_8_8?", + "D_907590067_8_8?", + "D_860112841_8_8?", + "D_158354252_8_8?", + "D_654594205_8_8?", + "D_550722030_8_8?", + "D_142912472_8_8?", + "D_158409298_8_8?", + "D_529744595_8_8?", + "D_315987564_8_8?", + "D_852278004_8_8?", + "D_391972881_8_8?", + "D_259089008_8_8?", + "D_209771602_8_8?", + "D_682651189_8_8?", + "D_750994269_8_8?", + "D_700889863_8_8?", + "D_990114799_8_8?", + "D_195363361_8_8?", + "D_216840563_8_8?", + "D_514034680_8_8?", + "D_247160067_8_8?", + "D_312545873_8_8?", + "SIBSUM_8_8", + "D_406098499_9_9?", + "D_579563781_9_9?", + "D_807431780_9_9?", + "D_589588769_9_9?", + "D_890637099_9_9?", + "D_869387390_9_9?", + "D_537137982_9_9?", + "D_607773106_9_9?", + "D_578895128_9_9?", + "D_384881609_9_9?", + "D_483975329_9_9?", + "D_570279754_9_9?", + "D_907590067_9_9?", + "D_860112841_9_9?", + "D_158354252_9_9?", + "D_654594205_9_9?", + "D_550722030_9_9?", + "D_142912472_9_9?", + "D_158409298_9_9?", + "D_529744595_9_9?", + "D_315987564_9_9?", + "D_852278004_9_9?", + "D_391972881_9_9?", + "D_259089008_9_9?", + "D_209771602_9_9?", + "D_682651189_9_9?", + "D_750994269_9_9?", + "D_700889863_9_9?", + "D_990114799_9_9?", + "D_195363361_9_9?", + "D_216840563_9_9?", + "D_514034680_9_9?", + "D_247160067_9_9?", + "D_312545873_9_9?", + "SIBSUM_9_9", + "D_406098499_10_10?", + "D_579563781_10_10?", + "D_807431780_10_10?", + "D_589588769_10_10?", + "D_890637099_10_10?", + "D_869387390_10_10?", + "D_537137982_10_10?", + "D_607773106_10_10?", + "D_578895128_10_10?", + "D_384881609_10_10?", + "D_483975329_10_10?", + "D_570279754_10_10?", + "D_907590067_10_10?", + "D_860112841_10_10?", + "D_158354252_10_10?", + "D_654594205_10_10?", + "D_550722030_10_10?", + "D_142912472_10_10?", + "D_158409298_10_10?", + "D_529744595_10_10?", + "D_315987564_10_10?", + "D_852278004_10_10?", + "D_391972881_10_10?", + "D_259089008_10_10?", + "D_209771602_10_10?", + "D_682651189_10_10?", + "D_750994269_10_10?", + "D_700889863_10_10?", + "D_990114799_10_10?", + "D_195363361_10_10?", + "D_216840563_10_10?", + "D_514034680_10_10?", + "D_247160067_10_10?", + "D_312545873_10_10?", + "SIBSUM_10_10", + "D_406098499_11_11?", + "D_579563781_11_11?", + "D_807431780_11_11?", + "D_589588769_11_11?", + "D_890637099_11_11?", + "D_869387390_11_11?", + "D_537137982_11_11?", + "D_607773106_11_11?", + "D_578895128_11_11?", + "D_384881609_11_11?", + "D_483975329_11_11?", + "D_570279754_11_11?", + "D_907590067_11_11?", + "D_860112841_11_11?", + "D_158354252_11_11?", + "D_654594205_11_11?", + "D_550722030_11_11?", + "D_142912472_11_11?", + "D_158409298_11_11?", + "D_529744595_11_11?", + "D_315987564_11_11?", + "D_852278004_11_11?", + "D_391972881_11_11?", + "D_259089008_11_11?", + "D_209771602_11_11?", + "D_682651189_11_11?", + "D_750994269_11_11?", + "D_700889863_11_11?", + "D_990114799_11_11?", + "D_195363361_11_11?", + "D_216840563_11_11?", + "D_514034680_11_11?", + "D_247160067_11_11?", + "D_312545873_11_11?", + "SIBSUM_11_11", + "D_406098499_12_12?", + "D_579563781_12_12?", + "D_807431780_12_12?", + "D_589588769_12_12?", + "D_890637099_12_12?", + "D_869387390_12_12?", + "D_537137982_12_12?", + "D_607773106_12_12?", + "D_578895128_12_12?", + "D_384881609_12_12?", + "D_483975329_12_12?", + "D_570279754_12_12?", + "D_907590067_12_12?", + "D_860112841_12_12?", + "D_158354252_12_12?", + "D_654594205_12_12?", + "D_550722030_12_12?", + "D_142912472_12_12?", + "D_158409298_12_12?", + "D_529744595_12_12?", + "D_315987564_12_12?", + "D_852278004_12_12?", + "D_391972881_12_12?", + "D_259089008_12_12?", + "D_209771602_12_12?", + "D_682651189_12_12?", + "D_750994269_12_12?", + "D_700889863_12_12?", + "D_990114799_12_12?", + "D_195363361_12_12?", + "D_216840563_12_12?", + "D_514034680_12_12?", + "D_247160067_12_12?", + "D_312545873_12_12?", + "SIBSUM_12_12", + "D_406098499_13_13?", + "D_579563781_13_13?", + "D_807431780_13_13?", + "D_589588769_13_13?", + "D_890637099_13_13?", + "D_869387390_13_13?", + "D_537137982_13_13?", + "D_607773106_13_13?", + "D_578895128_13_13?", + "D_384881609_13_13?", + "D_483975329_13_13?", + "D_570279754_13_13?", + "D_907590067_13_13?", + "D_860112841_13_13?", + "D_158354252_13_13?", + "D_654594205_13_13?", + "D_550722030_13_13?", + "D_142912472_13_13?", + "D_158409298_13_13?", + "D_529744595_13_13?", + "D_315987564_13_13?", + "D_852278004_13_13?", + "D_391972881_13_13?", + "D_259089008_13_13?", + "D_209771602_13_13?", + "D_682651189_13_13?", + "D_750994269_13_13?", + "D_700889863_13_13?", + "D_990114799_13_13?", + "D_195363361_13_13?", + "D_216840563_13_13?", + "D_514034680_13_13?", + "D_247160067_13_13?", + "D_312545873_13_13?", + "SIBSUM_13_13", + "D_406098499_14_14?", + "D_579563781_14_14?", + "D_807431780_14_14?", + "D_589588769_14_14?", + "D_890637099_14_14?", + "D_869387390_14_14?", + "D_537137982_14_14?", + "D_607773106_14_14?", + "D_578895128_14_14?", + "D_384881609_14_14?", + "D_483975329_14_14?", + "D_570279754_14_14?", + "D_907590067_14_14?", + "D_860112841_14_14?", + "D_158354252_14_14?", + "D_654594205_14_14?", + "D_550722030_14_14?", + "D_142912472_14_14?", + "D_158409298_14_14?", + "D_529744595_14_14?", + "D_315987564_14_14?", + "D_852278004_14_14?", + "D_391972881_14_14?", + "D_259089008_14_14?", + "D_209771602_14_14?", + "D_682651189_14_14?", + "D_750994269_14_14?", + "D_700889863_14_14?", + "D_990114799_14_14?", + "D_195363361_14_14?", + "D_216840563_14_14?", + "D_514034680_14_14?", + "D_247160067_14_14?", + "D_312545873_14_14?", + "SIBSUM_14_14", + "D_406098499_15_15?", + "D_579563781_15_15?", + "D_807431780_15_15?", + "D_589588769_15_15?", + "D_890637099_15_15?", + "D_869387390_15_15?", + "D_537137982_15_15?", + "D_607773106_15_15?", + "D_578895128_15_15?", + "D_384881609_15_15?", + "D_483975329_15_15?", + "D_570279754_15_15?", + "D_907590067_15_15?", + "D_860112841_15_15?", + "D_158354252_15_15?", + "D_654594205_15_15?", + "D_550722030_15_15?", + "D_142912472_15_15?", + "D_158409298_15_15?", + "D_529744595_15_15?", + "D_315987564_15_15?", + "D_852278004_15_15?", + "D_391972881_15_15?", + "D_259089008_15_15?", + "D_209771602_15_15?", + "D_682651189_15_15?", + "D_750994269_15_15?", + "D_700889863_15_15?", + "D_990114799_15_15?", + "D_195363361_15_15?", + "D_216840563_15_15?", + "D_514034680_15_15?", + "D_247160067_15_15?", + "D_312545873_15_15?", + "SIBSUM_15_15", + "D_406098499_16_16?", + "D_579563781_16_16?", + "D_807431780_16_16?", + "D_589588769_16_16?", + "D_890637099_16_16?", + "D_869387390_16_16?", + "D_537137982_16_16?", + "D_607773106_16_16?", + "D_578895128_16_16?", + "D_384881609_16_16?", + "D_483975329_16_16?", + "D_570279754_16_16?", + "D_907590067_16_16?", + "D_860112841_16_16?", + "D_158354252_16_16?", + "D_654594205_16_16?", + "D_550722030_16_16?", + "D_142912472_16_16?", + "D_158409298_16_16?", + "D_529744595_16_16?", + "D_315987564_16_16?", + "D_852278004_16_16?", + "D_391972881_16_16?", + "D_259089008_16_16?", + "D_209771602_16_16?", + "D_682651189_16_16?", + "D_750994269_16_16?", + "D_700889863_16_16?", + "D_990114799_16_16?", + "D_195363361_16_16?", + "D_216840563_16_16?", + "D_514034680_16_16?", + "D_247160067_16_16?", + "D_312545873_16_16?", + "SIBSUM_16_16", + "D_406098499_17_17?", + "D_579563781_17_17?", + "D_807431780_17_17?", + "D_589588769_17_17?", + "D_890637099_17_17?", + "D_869387390_17_17?", + "D_537137982_17_17?", + "D_607773106_17_17?", + "D_578895128_17_17?", + "D_384881609_17_17?", + "D_483975329_17_17?", + "D_570279754_17_17?", + "D_907590067_17_17?", + "D_860112841_17_17?", + "D_158354252_17_17?", + "D_654594205_17_17?", + "D_550722030_17_17?", + "D_142912472_17_17?", + "D_158409298_17_17?", + "D_529744595_17_17?", + "D_315987564_17_17?", + "D_852278004_17_17?", + "D_391972881_17_17?", + "D_259089008_17_17?", + "D_209771602_17_17?", + "D_682651189_17_17?", + "D_750994269_17_17?", + "D_700889863_17_17?", + "D_990114799_17_17?", + "D_195363361_17_17?", + "D_216840563_17_17?", + "D_514034680_17_17?", + "D_247160067_17_17?", + "D_312545873_17_17?", + "SIBSUM_17_17", + "D_406098499_18_18?", + "D_579563781_18_18?", + "D_807431780_18_18?", + "D_589588769_18_18?", + "D_890637099_18_18?", + "D_869387390_18_18?", + "D_537137982_18_18?", + "D_607773106_18_18?", + "D_578895128_18_18?", + "D_384881609_18_18?", + "D_483975329_18_18?", + "D_570279754_18_18?", + "D_907590067_18_18?", + "D_860112841_18_18?", + "D_158354252_18_18?", + "D_654594205_18_18?", + "D_550722030_18_18?", + "D_142912472_18_18?", + "D_158409298_18_18?", + "D_529744595_18_18?", + "D_315987564_18_18?", + "D_852278004_18_18?", + "D_391972881_18_18?", + "D_259089008_18_18?", + "D_209771602_18_18?", + "D_682651189_18_18?", + "D_750994269_18_18?", + "D_700889863_18_18?", + "D_990114799_18_18?", + "D_195363361_18_18?", + "D_216840563_18_18?", + "D_514034680_18_18?", + "D_247160067_18_18?", + "D_312545873_18_18?", + "SIBSUM_18_18", + "D_406098499_19_19?", + "D_579563781_19_19?", + "D_807431780_19_19?", + "D_589588769_19_19?", + "D_890637099_19_19?", + "D_869387390_19_19?", + "D_537137982_19_19?", + "D_607773106_19_19?", + "D_578895128_19_19?", + "D_384881609_19_19?", + "D_483975329_19_19?", + "D_570279754_19_19?", + "D_907590067_19_19?", + "D_860112841_19_19?", + "D_158354252_19_19?", + "D_654594205_19_19?", + "D_550722030_19_19?", + "D_142912472_19_19?", + "D_158409298_19_19?", + "D_529744595_19_19?", + "D_315987564_19_19?", + "D_852278004_19_19?", + "D_391972881_19_19?", + "D_259089008_19_19?", + "D_209771602_19_19?", + "D_682651189_19_19?", + "D_750994269_19_19?", + "D_700889863_19_19?", + "D_990114799_19_19?", + "D_195363361_19_19?", + "D_216840563_19_19?", + "D_514034680_19_19?", + "D_247160067_19_19?", + "D_312545873_19_19?", + "SIBSUM_19_19", + "D_406098499_20_20?", + "D_579563781_20_20?", + "D_807431780_20_20?", + "D_589588769_20_20?", + "D_890637099_20_20?", + "D_869387390_20_20?", + "D_537137982_20_20?", + "D_607773106_20_20?", + "D_578895128_20_20?", + "D_384881609_20_20?", + "D_483975329_20_20?", + "D_570279754_20_20?", + "D_907590067_20_20?", + "D_860112841_20_20?", + "D_158354252_20_20?", + "D_654594205_20_20?", + "D_550722030_20_20?", + "D_142912472_20_20?", + "D_158409298_20_20?", + "D_529744595_20_20?", + "D_315987564_20_20?", + "D_852278004_20_20?", + "D_391972881_20_20?", + "D_259089008_20_20?", + "D_209771602_20_20?", + "D_682651189_20_20?", + "D_750994269_20_20?", + "D_700889863_20_20?", + "D_990114799_20_20?", + "D_195363361_20_20?", + "D_216840563_20_20?", + "D_514034680_20_20?", + "D_247160067_20_20?", + "D_312545873_20_20?", + "SIBSUM_20_20", + "D_406098499_21_21?", + "D_579563781_21_21?", + "D_807431780_21_21?", + "D_589588769_21_21?", + "D_890637099_21_21?", + "D_869387390_21_21?", + "D_537137982_21_21?", + "D_607773106_21_21?", + "D_578895128_21_21?", + "D_384881609_21_21?", + "D_483975329_21_21?", + "D_570279754_21_21?", + "D_907590067_21_21?", + "D_860112841_21_21?", + "D_158354252_21_21?", + "D_654594205_21_21?", + "D_550722030_21_21?", + "D_142912472_21_21?", + "D_158409298_21_21?", + "D_529744595_21_21?", + "D_315987564_21_21?", + "D_852278004_21_21?", + "D_391972881_21_21?", + "D_259089008_21_21?", + "D_209771602_21_21?", + "D_682651189_21_21?", + "D_750994269_21_21?", + "D_700889863_21_21?", + "D_990114799_21_21?", + "D_195363361_21_21?", + "D_216840563_21_21?", + "D_514034680_21_21?", + "D_247160067_21_21?", + "D_312545873_21_21?", + "SIBSUM_21_21", + "D_406098499_22_22?", + "D_579563781_22_22?", + "D_807431780_22_22?", + "D_589588769_22_22?", + "D_890637099_22_22?", + "D_869387390_22_22?", + "D_537137982_22_22?", + "D_607773106_22_22?", + "D_578895128_22_22?", + "D_384881609_22_22?", + "D_483975329_22_22?", + "D_570279754_22_22?", + "D_907590067_22_22?", + "D_860112841_22_22?", + "D_158354252_22_22?", + "D_654594205_22_22?", + "D_550722030_22_22?", + "D_142912472_22_22?", + "D_158409298_22_22?", + "D_529744595_22_22?", + "D_315987564_22_22?", + "D_852278004_22_22?", + "D_391972881_22_22?", + "D_259089008_22_22?", + "D_209771602_22_22?", + "D_682651189_22_22?", + "D_750994269_22_22?", + "D_700889863_22_22?", + "D_990114799_22_22?", + "D_195363361_22_22?", + "D_216840563_22_22?", + "D_514034680_22_22?", + "D_247160067_22_22?", + "D_312545873_22_22?", + "SIBSUM_22_22", + "D_406098499_23_23?", + "D_579563781_23_23?", + "D_807431780_23_23?", + "D_589588769_23_23?", + "D_890637099_23_23?", + "D_869387390_23_23?", + "D_537137982_23_23?", + "D_607773106_23_23?", + "D_578895128_23_23?", + "D_384881609_23_23?", + "D_483975329_23_23?", + "D_570279754_23_23?", + "D_907590067_23_23?", + "D_860112841_23_23?", + "D_158354252_23_23?", + "D_654594205_23_23?", + "D_550722030_23_23?", + "D_142912472_23_23?", + "D_158409298_23_23?", + "D_529744595_23_23?", + "D_315987564_23_23?", + "D_852278004_23_23?", + "D_391972881_23_23?", + "D_259089008_23_23?", + "D_209771602_23_23?", + "D_682651189_23_23?", + "D_750994269_23_23?", + "D_700889863_23_23?", + "D_990114799_23_23?", + "D_195363361_23_23?", + "D_216840563_23_23?", + "D_514034680_23_23?", + "D_247160067_23_23?", + "D_312545873_23_23?", + "SIBSUM_23_23", + "D_406098499_24_24?", + "D_579563781_24_24?", + "D_807431780_24_24?", + "D_589588769_24_24?", + "D_890637099_24_24?", + "D_869387390_24_24?", + "D_537137982_24_24?", + "D_607773106_24_24?", + "D_578895128_24_24?", + "D_384881609_24_24?", + "D_483975329_24_24?", + "D_570279754_24_24?", + "D_907590067_24_24?", + "D_860112841_24_24?", + "D_158354252_24_24?", + "D_654594205_24_24?", + "D_550722030_24_24?", + "D_142912472_24_24?", + "D_158409298_24_24?", + "D_529744595_24_24?", + "D_315987564_24_24?", + "D_852278004_24_24?", + "D_391972881_24_24?", + "D_259089008_24_24?", + "D_209771602_24_24?", + "D_682651189_24_24?", + "D_750994269_24_24?", + "D_700889863_24_24?", + "D_990114799_24_24?", + "D_195363361_24_24?", + "D_216840563_24_24?", + "D_514034680_24_24?", + "D_247160067_24_24?", + "D_312545873_24_24?", + "SIBSUM_24_24", + "D_406098499_25_25?", + "D_579563781_25_25?", + "D_807431780_25_25?", + "D_589588769_25_25?", + "D_890637099_25_25?", + "D_869387390_25_25?", + "D_537137982_25_25?", + "D_607773106_25_25?", + "D_578895128_25_25?", + "D_384881609_25_25?", + "D_483975329_25_25?", + "D_570279754_25_25?", + "D_907590067_25_25?", + "D_860112841_25_25?", + "D_158354252_25_25?", + "D_654594205_25_25?", + "D_550722030_25_25?", + "D_142912472_25_25?", + "D_158409298_25_25?", + "D_529744595_25_25?", + "D_315987564_25_25?", + "D_852278004_25_25?", + "D_391972881_25_25?", + "D_259089008_25_25?", + "D_209771602_25_25?", + "D_682651189_25_25?", + "D_750994269_25_25?", + "D_700889863_25_25?", + "D_990114799_25_25?", + "D_195363361_25_25?", + "D_216840563_25_25?", + "D_514034680_25_25?", + "D_247160067_25_25?", + "D_312545873_25_25?", + "SIBSUM_25_25", + "END_OF_LOOP", + "CHILD", + "D_446999144!", + "CHILDCONFIRM", + "D_714001034_1_1?", + "D_887697329_1_1?", + "D_473529484_1_1?", + "D_873968217_1_1?", + "D_418392907_1_1?", + "D_640010727_1_1?", + "D_236590500_1_1?", + "D_718867914_1_1?", + "D_812370563_1_1?", + "D_900939817_1_1?", + "D_938150507_1_1?", + "D_601211723_1_1?", + "D_861788020_1_1?", + "D_204425387_1_1?", + "D_558929585_1_1?", + "D_233764880_1_1?", + "D_905145893_1_1?", + "D_473190270_1_1?", + "D_483735587_1_1?", + "D_331759900_1_1?", + "D_513077276_1_1?", + "D_519974530_1_1?", + "D_907776050_1_1?", + "D_271684775_1_1?", + "D_252160589_1_1?", + "D_774774759_1_1?", + "D_127257956_1_1?", + "D_496917282_1_1?", + "D_908129316_1_1?", + "D_795003496_1_1?", + "D_969177591_1_1?", + "D_116065851_1_1?", + "D_278159347_1_1?", + "D_845219872_1_1?", + "CHILDSUM_1_1", + "D_714001034_2_2?", + "D_887697329_2_2?", + "D_473529484_2_2?", + "D_873968217_2_2?", + "D_418392907_2_2?", + "D_640010727_2_2?", + "D_236590500_2_2?", + "D_718867914_2_2?", + "D_812370563_2_2?", + "D_900939817_2_2?", + "D_938150507_2_2?", + "D_601211723_2_2?", + "D_861788020_2_2?", + "D_204425387_2_2?", + "D_558929585_2_2?", + "D_233764880_2_2?", + "D_905145893_2_2?", + "D_473190270_2_2?", + "D_483735587_2_2?", + "D_331759900_2_2?", + "D_513077276_2_2?", + "D_519974530_2_2?", + "D_907776050_2_2?", + "D_271684775_2_2?", + "D_252160589_2_2?", + "D_774774759_2_2?", + "D_127257956_2_2?", + "D_496917282_2_2?", + "D_908129316_2_2?", + "D_795003496_2_2?", + "D_969177591_2_2?", + "D_116065851_2_2?", + "D_278159347_2_2?", + "D_845219872_2_2?", + "CHILDSUM_2_2", + "D_714001034_3_3?", + "D_887697329_3_3?", + "D_473529484_3_3?", + "D_873968217_3_3?", + "D_418392907_3_3?", + "D_640010727_3_3?", + "D_236590500_3_3?", + "D_718867914_3_3?", + "D_812370563_3_3?", + "D_900939817_3_3?", + "D_938150507_3_3?", + "D_601211723_3_3?", + "D_861788020_3_3?", + "D_204425387_3_3?", + "D_558929585_3_3?", + "D_233764880_3_3?", + "D_905145893_3_3?", + "D_473190270_3_3?", + "D_483735587_3_3?", + "D_331759900_3_3?", + "D_513077276_3_3?", + "D_519974530_3_3?", + "D_907776050_3_3?", + "D_271684775_3_3?", + "D_252160589_3_3?", + "D_774774759_3_3?", + "D_127257956_3_3?", + "D_496917282_3_3?", + "D_908129316_3_3?", + "D_795003496_3_3?", + "D_969177591_3_3?", + "D_116065851_3_3?", + "D_278159347_3_3?", + "D_845219872_3_3?", + "CHILDSUM_3_3", + "D_714001034_4_4?", + "D_887697329_4_4?", + "D_473529484_4_4?", + "D_873968217_4_4?", + "D_418392907_4_4?", + "D_640010727_4_4?", + "D_236590500_4_4?", + "D_718867914_4_4?", + "D_812370563_4_4?", + "D_900939817_4_4?", + "D_938150507_4_4?", + "D_601211723_4_4?", + "D_861788020_4_4?", + "D_204425387_4_4?", + "D_558929585_4_4?", + "D_233764880_4_4?", + "D_905145893_4_4?", + "D_473190270_4_4?", + "D_483735587_4_4?", + "D_331759900_4_4?", + "D_513077276_4_4?", + "D_519974530_4_4?", + "D_907776050_4_4?", + "D_271684775_4_4?", + "D_252160589_4_4?", + "D_774774759_4_4?", + "D_127257956_4_4?", + "D_496917282_4_4?", + "D_908129316_4_4?", + "D_795003496_4_4?", + "D_969177591_4_4?", + "D_116065851_4_4?", + "D_278159347_4_4?", + "D_845219872_4_4?", + "CHILDSUM_4_4", + "D_714001034_5_5?", + "D_887697329_5_5?", + "D_473529484_5_5?", + "D_873968217_5_5?", + "D_418392907_5_5?", + "D_640010727_5_5?", + "D_236590500_5_5?", + "D_718867914_5_5?", + "D_812370563_5_5?", + "D_900939817_5_5?", + "D_938150507_5_5?", + "D_601211723_5_5?", + "D_861788020_5_5?", + "D_204425387_5_5?", + "D_558929585_5_5?", + "D_233764880_5_5?", + "D_905145893_5_5?", + "D_473190270_5_5?", + "D_483735587_5_5?", + "D_331759900_5_5?", + "D_513077276_5_5?", + "D_519974530_5_5?", + "D_907776050_5_5?", + "D_271684775_5_5?", + "D_252160589_5_5?", + "D_774774759_5_5?", + "D_127257956_5_5?", + "D_496917282_5_5?", + "D_908129316_5_5?", + "D_795003496_5_5?", + "D_969177591_5_5?", + "D_116065851_5_5?", + "D_278159347_5_5?", + "D_845219872_5_5?", + "CHILDSUM_5_5", + "D_714001034_6_6?", + "D_887697329_6_6?", + "D_473529484_6_6?", + "D_873968217_6_6?", + "D_418392907_6_6?", + "D_640010727_6_6?", + "D_236590500_6_6?", + "D_718867914_6_6?", + "D_812370563_6_6?", + "D_900939817_6_6?", + "D_938150507_6_6?", + "D_601211723_6_6?", + "D_861788020_6_6?", + "D_204425387_6_6?", + "D_558929585_6_6?", + "D_233764880_6_6?", + "D_905145893_6_6?", + "D_473190270_6_6?", + "D_483735587_6_6?", + "D_331759900_6_6?", + "D_513077276_6_6?", + "D_519974530_6_6?", + "D_907776050_6_6?", + "D_271684775_6_6?", + "D_252160589_6_6?", + "D_774774759_6_6?", + "D_127257956_6_6?", + "D_496917282_6_6?", + "D_908129316_6_6?", + "D_795003496_6_6?", + "D_969177591_6_6?", + "D_116065851_6_6?", + "D_278159347_6_6?", + "D_845219872_6_6?", + "CHILDSUM_6_6", + "D_714001034_7_7?", + "D_887697329_7_7?", + "D_473529484_7_7?", + "D_873968217_7_7?", + "D_418392907_7_7?", + "D_640010727_7_7?", + "D_236590500_7_7?", + "D_718867914_7_7?", + "D_812370563_7_7?", + "D_900939817_7_7?", + "D_938150507_7_7?", + "D_601211723_7_7?", + "D_861788020_7_7?", + "D_204425387_7_7?", + "D_558929585_7_7?", + "D_233764880_7_7?", + "D_905145893_7_7?", + "D_473190270_7_7?", + "D_483735587_7_7?", + "D_331759900_7_7?", + "D_513077276_7_7?", + "D_519974530_7_7?", + "D_907776050_7_7?", + "D_271684775_7_7?", + "D_252160589_7_7?", + "D_774774759_7_7?", + "D_127257956_7_7?", + "D_496917282_7_7?", + "D_908129316_7_7?", + "D_795003496_7_7?", + "D_969177591_7_7?", + "D_116065851_7_7?", + "D_278159347_7_7?", + "D_845219872_7_7?", + "CHILDSUM_7_7", + "D_714001034_8_8?", + "D_887697329_8_8?", + "D_473529484_8_8?", + "D_873968217_8_8?", + "D_418392907_8_8?", + "D_640010727_8_8?", + "D_236590500_8_8?", + "D_718867914_8_8?", + "D_812370563_8_8?", + "D_900939817_8_8?", + "D_938150507_8_8?", + "D_601211723_8_8?", + "D_861788020_8_8?", + "D_204425387_8_8?", + "D_558929585_8_8?", + "D_233764880_8_8?", + "D_905145893_8_8?", + "D_473190270_8_8?", + "D_483735587_8_8?", + "D_331759900_8_8?", + "D_513077276_8_8?", + "D_519974530_8_8?", + "D_907776050_8_8?", + "D_271684775_8_8?", + "D_252160589_8_8?", + "D_774774759_8_8?", + "D_127257956_8_8?", + "D_496917282_8_8?", + "D_908129316_8_8?", + "D_795003496_8_8?", + "D_969177591_8_8?", + "D_116065851_8_8?", + "D_278159347_8_8?", + "D_845219872_8_8?", + "CHILDSUM_8_8", + "D_714001034_9_9?", + "D_887697329_9_9?", + "D_473529484_9_9?", + "D_873968217_9_9?", + "D_418392907_9_9?", + "D_640010727_9_9?", + "D_236590500_9_9?", + "D_718867914_9_9?", + "D_812370563_9_9?", + "D_900939817_9_9?", + "D_938150507_9_9?", + "D_601211723_9_9?", + "D_861788020_9_9?", + "D_204425387_9_9?", + "D_558929585_9_9?", + "D_233764880_9_9?", + "D_905145893_9_9?", + "D_473190270_9_9?", + "D_483735587_9_9?", + "D_331759900_9_9?", + "D_513077276_9_9?", + "D_519974530_9_9?", + "D_907776050_9_9?", + "D_271684775_9_9?", + "D_252160589_9_9?", + "D_774774759_9_9?", + "D_127257956_9_9?", + "D_496917282_9_9?", + "D_908129316_9_9?", + "D_795003496_9_9?", + "D_969177591_9_9?", + "D_116065851_9_9?", + "D_278159347_9_9?", + "D_845219872_9_9?", + "CHILDSUM_9_9", + "D_714001034_10_10?", + "D_887697329_10_10?", + "D_473529484_10_10?", + "D_873968217_10_10?", + "D_418392907_10_10?", + "D_640010727_10_10?", + "D_236590500_10_10?", + "D_718867914_10_10?", + "D_812370563_10_10?", + "D_900939817_10_10?", + "D_938150507_10_10?", + "D_601211723_10_10?", + "D_861788020_10_10?", + "D_204425387_10_10?", + "D_558929585_10_10?", + "D_233764880_10_10?", + "D_905145893_10_10?", + "D_473190270_10_10?", + "D_483735587_10_10?", + "D_331759900_10_10?", + "D_513077276_10_10?", + "D_519974530_10_10?", + "D_907776050_10_10?", + "D_271684775_10_10?", + "D_252160589_10_10?", + "D_774774759_10_10?", + "D_127257956_10_10?", + "D_496917282_10_10?", + "D_908129316_10_10?", + "D_795003496_10_10?", + "D_969177591_10_10?", + "D_116065851_10_10?", + "D_278159347_10_10?", + "D_845219872_10_10?", + "CHILDSUM_10_10", + "D_714001034_11_11?", + "D_887697329_11_11?", + "D_473529484_11_11?", + "D_873968217_11_11?", + "D_418392907_11_11?", + "D_640010727_11_11?", + "D_236590500_11_11?", + "D_718867914_11_11?", + "D_812370563_11_11?", + "D_900939817_11_11?", + "D_938150507_11_11?", + "D_601211723_11_11?", + "D_861788020_11_11?", + "D_204425387_11_11?", + "D_558929585_11_11?", + "D_233764880_11_11?", + "D_905145893_11_11?", + "D_473190270_11_11?", + "D_483735587_11_11?", + "D_331759900_11_11?", + "D_513077276_11_11?", + "D_519974530_11_11?", + "D_907776050_11_11?", + "D_271684775_11_11?", + "D_252160589_11_11?", + "D_774774759_11_11?", + "D_127257956_11_11?", + "D_496917282_11_11?", + "D_908129316_11_11?", + "D_795003496_11_11?", + "D_969177591_11_11?", + "D_116065851_11_11?", + "D_278159347_11_11?", + "D_845219872_11_11?", + "CHILDSUM_11_11", + "D_714001034_12_12?", + "D_887697329_12_12?", + "D_473529484_12_12?", + "D_873968217_12_12?", + "D_418392907_12_12?", + "D_640010727_12_12?", + "D_236590500_12_12?", + "D_718867914_12_12?", + "D_812370563_12_12?", + "D_900939817_12_12?", + "D_938150507_12_12?", + "D_601211723_12_12?", + "D_861788020_12_12?", + "D_204425387_12_12?", + "D_558929585_12_12?", + "D_233764880_12_12?", + "D_905145893_12_12?", + "D_473190270_12_12?", + "D_483735587_12_12?", + "D_331759900_12_12?", + "D_513077276_12_12?", + "D_519974530_12_12?", + "D_907776050_12_12?", + "D_271684775_12_12?", + "D_252160589_12_12?", + "D_774774759_12_12?", + "D_127257956_12_12?", + "D_496917282_12_12?", + "D_908129316_12_12?", + "D_795003496_12_12?", + "D_969177591_12_12?", + "D_116065851_12_12?", + "D_278159347_12_12?", + "D_845219872_12_12?", + "CHILDSUM_12_12", + "D_714001034_13_13?", + "D_887697329_13_13?", + "D_473529484_13_13?", + "D_873968217_13_13?", + "D_418392907_13_13?", + "D_640010727_13_13?", + "D_236590500_13_13?", + "D_718867914_13_13?", + "D_812370563_13_13?", + "D_900939817_13_13?", + "D_938150507_13_13?", + "D_601211723_13_13?", + "D_861788020_13_13?", + "D_204425387_13_13?", + "D_558929585_13_13?", + "D_233764880_13_13?", + "D_905145893_13_13?", + "D_473190270_13_13?", + "D_483735587_13_13?", + "D_331759900_13_13?", + "D_513077276_13_13?", + "D_519974530_13_13?", + "D_907776050_13_13?", + "D_271684775_13_13?", + "D_252160589_13_13?", + "D_774774759_13_13?", + "D_127257956_13_13?", + "D_496917282_13_13?", + "D_908129316_13_13?", + "D_795003496_13_13?", + "D_969177591_13_13?", + "D_116065851_13_13?", + "D_278159347_13_13?", + "D_845219872_13_13?", + "CHILDSUM_13_13", + "D_714001034_14_14?", + "D_887697329_14_14?", + "D_473529484_14_14?", + "D_873968217_14_14?", + "D_418392907_14_14?", + "D_640010727_14_14?", + "D_236590500_14_14?", + "D_718867914_14_14?", + "D_812370563_14_14?", + "D_900939817_14_14?", + "D_938150507_14_14?", + "D_601211723_14_14?", + "D_861788020_14_14?", + "D_204425387_14_14?", + "D_558929585_14_14?", + "D_233764880_14_14?", + "D_905145893_14_14?", + "D_473190270_14_14?", + "D_483735587_14_14?", + "D_331759900_14_14?", + "D_513077276_14_14?", + "D_519974530_14_14?", + "D_907776050_14_14?", + "D_271684775_14_14?", + "D_252160589_14_14?", + "D_774774759_14_14?", + "D_127257956_14_14?", + "D_496917282_14_14?", + "D_908129316_14_14?", + "D_795003496_14_14?", + "D_969177591_14_14?", + "D_116065851_14_14?", + "D_278159347_14_14?", + "D_845219872_14_14?", + "CHILDSUM_14_14", + "D_714001034_15_15?", + "D_887697329_15_15?", + "D_473529484_15_15?", + "D_873968217_15_15?", + "D_418392907_15_15?", + "D_640010727_15_15?", + "D_236590500_15_15?", + "D_718867914_15_15?", + "D_812370563_15_15?", + "D_900939817_15_15?", + "D_938150507_15_15?", + "D_601211723_15_15?", + "D_861788020_15_15?", + "D_204425387_15_15?", + "D_558929585_15_15?", + "D_233764880_15_15?", + "D_905145893_15_15?", + "D_473190270_15_15?", + "D_483735587_15_15?", + "D_331759900_15_15?", + "D_513077276_15_15?", + "D_519974530_15_15?", + "D_907776050_15_15?", + "D_271684775_15_15?", + "D_252160589_15_15?", + "D_774774759_15_15?", + "D_127257956_15_15?", + "D_496917282_15_15?", + "D_908129316_15_15?", + "D_795003496_15_15?", + "D_969177591_15_15?", + "D_116065851_15_15?", + "D_278159347_15_15?", + "D_845219872_15_15?", + "CHILDSUM_15_15", + "D_714001034_16_16?", + "D_887697329_16_16?", + "D_473529484_16_16?", + "D_873968217_16_16?", + "D_418392907_16_16?", + "D_640010727_16_16?", + "D_236590500_16_16?", + "D_718867914_16_16?", + "D_812370563_16_16?", + "D_900939817_16_16?", + "D_938150507_16_16?", + "D_601211723_16_16?", + "D_861788020_16_16?", + "D_204425387_16_16?", + "D_558929585_16_16?", + "D_233764880_16_16?", + "D_905145893_16_16?", + "D_473190270_16_16?", + "D_483735587_16_16?", + "D_331759900_16_16?", + "D_513077276_16_16?", + "D_519974530_16_16?", + "D_907776050_16_16?", + "D_271684775_16_16?", + "D_252160589_16_16?", + "D_774774759_16_16?", + "D_127257956_16_16?", + "D_496917282_16_16?", + "D_908129316_16_16?", + "D_795003496_16_16?", + "D_969177591_16_16?", + "D_116065851_16_16?", + "D_278159347_16_16?", + "D_845219872_16_16?", + "CHILDSUM_16_16", + "D_714001034_17_17?", + "D_887697329_17_17?", + "D_473529484_17_17?", + "D_873968217_17_17?", + "D_418392907_17_17?", + "D_640010727_17_17?", + "D_236590500_17_17?", + "D_718867914_17_17?", + "D_812370563_17_17?", + "D_900939817_17_17?", + "D_938150507_17_17?", + "D_601211723_17_17?", + "D_861788020_17_17?", + "D_204425387_17_17?", + "D_558929585_17_17?", + "D_233764880_17_17?", + "D_905145893_17_17?", + "D_473190270_17_17?", + "D_483735587_17_17?", + "D_331759900_17_17?", + "D_513077276_17_17?", + "D_519974530_17_17?", + "D_907776050_17_17?", + "D_271684775_17_17?", + "D_252160589_17_17?", + "D_774774759_17_17?", + "D_127257956_17_17?", + "D_496917282_17_17?", + "D_908129316_17_17?", + "D_795003496_17_17?", + "D_969177591_17_17?", + "D_116065851_17_17?", + "D_278159347_17_17?", + "D_845219872_17_17?", + "CHILDSUM_17_17", + "D_714001034_18_18?", + "D_887697329_18_18?", + "D_473529484_18_18?", + "D_873968217_18_18?", + "D_418392907_18_18?", + "D_640010727_18_18?", + "D_236590500_18_18?", + "D_718867914_18_18?", + "D_812370563_18_18?", + "D_900939817_18_18?", + "D_938150507_18_18?", + "D_601211723_18_18?", + "D_861788020_18_18?", + "D_204425387_18_18?", + "D_558929585_18_18?", + "D_233764880_18_18?", + "D_905145893_18_18?", + "D_473190270_18_18?", + "D_483735587_18_18?", + "D_331759900_18_18?", + "D_513077276_18_18?", + "D_519974530_18_18?", + "D_907776050_18_18?", + "D_271684775_18_18?", + "D_252160589_18_18?", + "D_774774759_18_18?", + "D_127257956_18_18?", + "D_496917282_18_18?", + "D_908129316_18_18?", + "D_795003496_18_18?", + "D_969177591_18_18?", + "D_116065851_18_18?", + "D_278159347_18_18?", + "D_845219872_18_18?", + "CHILDSUM_18_18", + "D_714001034_19_19?", + "D_887697329_19_19?", + "D_473529484_19_19?", + "D_873968217_19_19?", + "D_418392907_19_19?", + "D_640010727_19_19?", + "D_236590500_19_19?", + "D_718867914_19_19?", + "D_812370563_19_19?", + "D_900939817_19_19?", + "D_938150507_19_19?", + "D_601211723_19_19?", + "D_861788020_19_19?", + "D_204425387_19_19?", + "D_558929585_19_19?", + "D_233764880_19_19?", + "D_905145893_19_19?", + "D_473190270_19_19?", + "D_483735587_19_19?", + "D_331759900_19_19?", + "D_513077276_19_19?", + "D_519974530_19_19?", + "D_907776050_19_19?", + "D_271684775_19_19?", + "D_252160589_19_19?", + "D_774774759_19_19?", + "D_127257956_19_19?", + "D_496917282_19_19?", + "D_908129316_19_19?", + "D_795003496_19_19?", + "D_969177591_19_19?", + "D_116065851_19_19?", + "D_278159347_19_19?", + "D_845219872_19_19?", + "CHILDSUM_19_19", + "D_714001034_20_20?", + "D_887697329_20_20?", + "D_473529484_20_20?", + "D_873968217_20_20?", + "D_418392907_20_20?", + "D_640010727_20_20?", + "D_236590500_20_20?", + "D_718867914_20_20?", + "D_812370563_20_20?", + "D_900939817_20_20?", + "D_938150507_20_20?", + "D_601211723_20_20?", + "D_861788020_20_20?", + "D_204425387_20_20?", + "D_558929585_20_20?", + "D_233764880_20_20?", + "D_905145893_20_20?", + "D_473190270_20_20?", + "D_483735587_20_20?", + "D_331759900_20_20?", + "D_513077276_20_20?", + "D_519974530_20_20?", + "D_907776050_20_20?", + "D_271684775_20_20?", + "D_252160589_20_20?", + "D_774774759_20_20?", + "D_127257956_20_20?", + "D_496917282_20_20?", + "D_908129316_20_20?", + "D_795003496_20_20?", + "D_969177591_20_20?", + "D_116065851_20_20?", + "D_278159347_20_20?", + "D_845219872_20_20?", + "CHILDSUM_20_20", + "D_714001034_21_21?", + "D_887697329_21_21?", + "D_473529484_21_21?", + "D_873968217_21_21?", + "D_418392907_21_21?", + "D_640010727_21_21?", + "D_236590500_21_21?", + "D_718867914_21_21?", + "D_812370563_21_21?", + "D_900939817_21_21?", + "D_938150507_21_21?", + "D_601211723_21_21?", + "D_861788020_21_21?", + "D_204425387_21_21?", + "D_558929585_21_21?", + "D_233764880_21_21?", + "D_905145893_21_21?", + "D_473190270_21_21?", + "D_483735587_21_21?", + "D_331759900_21_21?", + "D_513077276_21_21?", + "D_519974530_21_21?", + "D_907776050_21_21?", + "D_271684775_21_21?", + "D_252160589_21_21?", + "D_774774759_21_21?", + "D_127257956_21_21?", + "D_496917282_21_21?", + "D_908129316_21_21?", + "D_795003496_21_21?", + "D_969177591_21_21?", + "D_116065851_21_21?", + "D_278159347_21_21?", + "D_845219872_21_21?", + "CHILDSUM_21_21", + "D_714001034_22_22?", + "D_887697329_22_22?", + "D_473529484_22_22?", + "D_873968217_22_22?", + "D_418392907_22_22?", + "D_640010727_22_22?", + "D_236590500_22_22?", + "D_718867914_22_22?", + "D_812370563_22_22?", + "D_900939817_22_22?", + "D_938150507_22_22?", + "D_601211723_22_22?", + "D_861788020_22_22?", + "D_204425387_22_22?", + "D_558929585_22_22?", + "D_233764880_22_22?", + "D_905145893_22_22?", + "D_473190270_22_22?", + "D_483735587_22_22?", + "D_331759900_22_22?", + "D_513077276_22_22?", + "D_519974530_22_22?", + "D_907776050_22_22?", + "D_271684775_22_22?", + "D_252160589_22_22?", + "D_774774759_22_22?", + "D_127257956_22_22?", + "D_496917282_22_22?", + "D_908129316_22_22?", + "D_795003496_22_22?", + "D_969177591_22_22?", + "D_116065851_22_22?", + "D_278159347_22_22?", + "D_845219872_22_22?", + "CHILDSUM_22_22", + "D_714001034_23_23?", + "D_887697329_23_23?", + "D_473529484_23_23?", + "D_873968217_23_23?", + "D_418392907_23_23?", + "D_640010727_23_23?", + "D_236590500_23_23?", + "D_718867914_23_23?", + "D_812370563_23_23?", + "D_900939817_23_23?", + "D_938150507_23_23?", + "D_601211723_23_23?", + "D_861788020_23_23?", + "D_204425387_23_23?", + "D_558929585_23_23?", + "D_233764880_23_23?", + "D_905145893_23_23?", + "D_473190270_23_23?", + "D_483735587_23_23?", + "D_331759900_23_23?", + "D_513077276_23_23?", + "D_519974530_23_23?", + "D_907776050_23_23?", + "D_271684775_23_23?", + "D_252160589_23_23?", + "D_774774759_23_23?", + "D_127257956_23_23?", + "D_496917282_23_23?", + "D_908129316_23_23?", + "D_795003496_23_23?", + "D_969177591_23_23?", + "D_116065851_23_23?", + "D_278159347_23_23?", + "D_845219872_23_23?", + "CHILDSUM_23_23", + "D_714001034_24_24?", + "D_887697329_24_24?", + "D_473529484_24_24?", + "D_873968217_24_24?", + "D_418392907_24_24?", + "D_640010727_24_24?", + "D_236590500_24_24?", + "D_718867914_24_24?", + "D_812370563_24_24?", + "D_900939817_24_24?", + "D_938150507_24_24?", + "D_601211723_24_24?", + "D_861788020_24_24?", + "D_204425387_24_24?", + "D_558929585_24_24?", + "D_233764880_24_24?", + "D_905145893_24_24?", + "D_473190270_24_24?", + "D_483735587_24_24?", + "D_331759900_24_24?", + "D_513077276_24_24?", + "D_519974530_24_24?", + "D_907776050_24_24?", + "D_271684775_24_24?", + "D_252160589_24_24?", + "D_774774759_24_24?", + "D_127257956_24_24?", + "D_496917282_24_24?", + "D_908129316_24_24?", + "D_795003496_24_24?", + "D_969177591_24_24?", + "D_116065851_24_24?", + "D_278159347_24_24?", + "D_845219872_24_24?", + "CHILDSUM_24_24", + "D_714001034_25_25?", + "D_887697329_25_25?", + "D_473529484_25_25?", + "D_873968217_25_25?", + "D_418392907_25_25?", + "D_640010727_25_25?", + "D_236590500_25_25?", + "D_718867914_25_25?", + "D_812370563_25_25?", + "D_900939817_25_25?", + "D_938150507_25_25?", + "D_601211723_25_25?", + "D_861788020_25_25?", + "D_204425387_25_25?", + "D_558929585_25_25?", + "D_233764880_25_25?", + "D_905145893_25_25?", + "D_473190270_25_25?", + "D_483735587_25_25?", + "D_331759900_25_25?", + "D_513077276_25_25?", + "D_519974530_25_25?", + "D_907776050_25_25?", + "D_271684775_25_25?", + "D_252160589_25_25?", + "D_774774759_25_25?", + "D_127257956_25_25?", + "D_496917282_25_25?", + "D_908129316_25_25?", + "D_795003496_25_25?", + "D_969177591_25_25?", + "D_116065851_25_25?", + "D_278159347_25_25?", + "D_845219872_25_25?", + "CHILDSUM_25_25", + "END_OF_LOOP", + "SECTION5", + "D_367803647?", + "D_784967158?", + "D_613744428?", + "D_114529380?", + "D_627122657?", + "D_796828094?", + "D_761310265?", + "D_434316600?", + "D_700374192?", + "D_868232409?", + "D_739294356?", + "D_847533056?", + "D_403258164?", + "D_118061122?", + "D_518387017?", + "D_279637054?", + "D_988878019?", + "D_530742915?", + "D_233198706?", + "D_686172464?", + "D_759004335?", + "D_641651634?", + "D_431721131?", + "END" + ], + "responseControlsByType": { + "checkbox": 1725, + "number": 2874, + "radio": 883, + "text": 126, + "textarea": 2 + }, + "explicitTransitions": { + "targets": [ + "D_362270886", + "D_525535977", + "D_976808005", + "D_308014437", + "D_351657815", + "D_115616118", + "D_797626610", + "D_588212264", + "D_167101091", + "D_965917116", + "D_929240175", + "D_836712013", + "D_836890480", + "D_624479779", + "D_337278854", + "D_681229479", + "D_660358706", + "D_884793537", + "D_460062034", + "D_110652436", + "D_894259747", + "D_448722126", + "D_201449164", + "D_436333358", + "D_180961306", + "D_554782332", + "D_409622468", + "D_448476881", + "D_459764934", + "D_374697037", + "D_580911251", + "D_190347832", + "D_624777141", + "D_980403315", + "D_936039586", + "D_430472084", + "D_900541533", + "D_139655599", + "D_494032093", + "D_810918716", + "D_874046190", + "D_301679110", + "D_989016875", + "D_878094302", + "D_543728565", + "D_173101988", + "D_245861186", + "D_420423416", + "INTROSTD", + "D_915230886", + "D_530548878", + "D_469947273", + "D_685735916", + "D_954405492", + "D_103397024", + "D_931470797", + "D_922524563", + "D_978485677", + "D_523188839", + "D_725626004", + "D_846786840", + "D_423547108", + "D_852898339", + "D_467061940", + "D_619481697", + "DEPRESSINTRO", + "D_266847650", + "D_219956652", + "D_852236900", + "INTROSURG", + "D_301414575", + "D_367884741", + "D_178353079", + "D_550075233", + "D_927516732", + "D_552788665", + "D_439736294", + "D_860920332", + "D_986613440", + "D_517307064", + "D_150352141", + "D_122887481", + "D_378892977", + "D_224791140", + "D_518750011", + "D_946504570", + "D_107060069", + "D_527057404", + "D_453252072", + "D_216506024", + "D_477690298", + "D_176453768", + "D_145786416", + "D_287605131", + "D_701157499", + "D_428639167", + "D_282355641", + "D_539301647", + "D_579225381", + "D_891214661", + "D_534007917", + "D_752636038", + "D_275770221", + "D_882152987", + "D_875208305", + "D_795940097", + "D_406011084", + "D_338924834", + "D_746012894", + "D_936904328", + "D_206319592", + "D_283634623", + "D_164752169", + "FAMHISTINTRO", + "D_512167179", + "D_509933065", + "D_967093163", + "D_422714611", + "D_354326265", + "D_276353712", + "D_367374606", + "D_814510313", + "D_259397450", + "D_528753070", + "D_683981980", + "D_402548942", + "D_247198016", + "D_891925519", + "D_317093647", + "D_684692228", + "D_671347092", + "D_875221479", + "D_186170949", + "D_726451917", + "D_213545903", + "D_765903702", + "D_773974223", + "D_433604862", + "D_521369040", + "D_497311092", + "D_625249910", + "D_838564850", + "D_633764113", + "D_882263738", + "D_671308090", + "D_628078826", + "D_178774803", + "D_659784914", + "SIB", + "D_173240848", + "D_345146692", + "D_243443318", + "D_610382315", + "D_135519371", + "D_785019074", + "D_152885579", + "D_692910565", + "D_522464057", + "D_808655074", + "D_659627058", + "D_370198527", + "D_291855684", + "D_413536735", + "D_210325948", + "D_193297280", + "D_121502359", + "D_489402657", + "D_727260639", + "D_359291056", + "D_968841976", + "D_864981804", + "D_499434567", + "D_890637099_1_1", + "D_869387390_1_1", + "D_537137982_1_1", + "D_607773106_1_1", + "_CONTINUE1_1_1", + "D_578895128_1_1", + "D_384881609_1_1", + "D_483975329_1_1", + "D_570279754_1_1", + "D_907590067_1_1", + "D_860112841_1_1", + "D_158354252_1_1", + "D_654594205_1_1", + "D_550722030_1_1", + "D_142912472_1_1", + "D_158409298_1_1", + "D_529744595_1_1", + "D_315987564_1_1", + "D_852278004_1_1", + "D_391972881_1_1", + "D_259089008_1_1", + "D_209771602_1_1", + "D_682651189_1_1", + "D_750994269_1_1", + "D_700889863_1_1", + "D_990114799_1_1", + "D_195363361_1_1", + "D_216840563_1_1", + "D_514034680_1_1", + "D_247160067_1_1", + "D_312545873_1_1", + "D_890637099_2_2", + "D_869387390_2_2", + "D_537137982_2_2", + "D_607773106_2_2", + "_CONTINUE1_2_2", + "D_578895128_2_2", + "D_384881609_2_2", + "D_483975329_2_2", + "D_570279754_2_2", + "D_907590067_2_2", + "D_860112841_2_2", + "D_158354252_2_2", + "D_654594205_2_2", + "D_550722030_2_2", + "D_142912472_2_2", + "D_158409298_2_2", + "D_529744595_2_2", + "D_315987564_2_2", + "D_852278004_2_2", + "D_391972881_2_2", + "D_259089008_2_2", + "D_209771602_2_2", + "D_682651189_2_2", + "D_750994269_2_2", + "D_700889863_2_2", + "D_990114799_2_2", + "D_195363361_2_2", + "D_216840563_2_2", + "D_514034680_2_2", + "D_247160067_2_2", + "D_312545873_2_2", + "D_890637099_3_3", + "D_869387390_3_3", + "D_537137982_3_3", + "D_607773106_3_3", + "_CONTINUE1_3_3", + "D_578895128_3_3", + "D_384881609_3_3", + "D_483975329_3_3", + "D_570279754_3_3", + "D_907590067_3_3", + "D_860112841_3_3", + "D_158354252_3_3", + "D_654594205_3_3", + "D_550722030_3_3", + "D_142912472_3_3", + "D_158409298_3_3", + "D_529744595_3_3", + "D_315987564_3_3", + "D_852278004_3_3", + "D_391972881_3_3", + "D_259089008_3_3", + "D_209771602_3_3", + "D_682651189_3_3", + "D_750994269_3_3", + "D_700889863_3_3", + "D_990114799_3_3", + "D_195363361_3_3", + "D_216840563_3_3", + "D_514034680_3_3", + "D_247160067_3_3", + "D_312545873_3_3", + "D_890637099_4_4", + "D_869387390_4_4", + "D_537137982_4_4", + "D_607773106_4_4", + "_CONTINUE1_4_4", + "D_578895128_4_4", + "D_384881609_4_4", + "D_483975329_4_4", + "D_570279754_4_4", + "D_907590067_4_4", + "D_860112841_4_4", + "D_158354252_4_4", + "D_654594205_4_4", + "D_550722030_4_4", + "D_142912472_4_4", + "D_158409298_4_4", + "D_529744595_4_4", + "D_315987564_4_4", + "D_852278004_4_4", + "D_391972881_4_4", + "D_259089008_4_4", + "D_209771602_4_4", + "D_682651189_4_4", + "D_750994269_4_4", + "D_700889863_4_4", + "D_990114799_4_4", + "D_195363361_4_4", + "D_216840563_4_4", + "D_514034680_4_4", + "D_247160067_4_4", + "D_312545873_4_4", + "D_890637099_5_5", + "D_869387390_5_5", + "D_537137982_5_5", + "D_607773106_5_5", + "_CONTINUE1_5_5", + "D_578895128_5_5", + "D_384881609_5_5", + "D_483975329_5_5", + "D_570279754_5_5", + "D_907590067_5_5", + "D_860112841_5_5", + "D_158354252_5_5", + "D_654594205_5_5", + "D_550722030_5_5", + "D_142912472_5_5", + "D_158409298_5_5", + "D_529744595_5_5", + "D_315987564_5_5", + "D_852278004_5_5", + "D_391972881_5_5", + "D_259089008_5_5", + "D_209771602_5_5", + "D_682651189_5_5", + "D_750994269_5_5", + "D_700889863_5_5", + "D_990114799_5_5", + "D_195363361_5_5", + "D_216840563_5_5", + "D_514034680_5_5", + "D_247160067_5_5", + "D_312545873_5_5", + "D_890637099_6_6", + "D_869387390_6_6", + "D_537137982_6_6", + "D_607773106_6_6", + "_CONTINUE1_6_6", + "D_578895128_6_6", + "D_384881609_6_6", + "D_483975329_6_6", + "D_570279754_6_6", + "D_907590067_6_6", + "D_860112841_6_6", + "D_158354252_6_6", + "D_654594205_6_6", + "D_550722030_6_6", + "D_142912472_6_6", + "D_158409298_6_6", + "D_529744595_6_6", + "D_315987564_6_6", + "D_852278004_6_6", + "D_391972881_6_6", + "D_259089008_6_6", + "D_209771602_6_6", + "D_682651189_6_6", + "D_750994269_6_6", + "D_700889863_6_6", + "D_990114799_6_6", + "D_195363361_6_6", + "D_216840563_6_6", + "D_514034680_6_6", + "D_247160067_6_6", + "D_312545873_6_6", + "D_890637099_7_7", + "D_869387390_7_7", + "D_537137982_7_7", + "D_607773106_7_7", + "_CONTINUE1_7_7", + "D_578895128_7_7", + "D_384881609_7_7", + "D_483975329_7_7", + "D_570279754_7_7", + "D_907590067_7_7", + "D_860112841_7_7", + "D_158354252_7_7", + "D_654594205_7_7", + "D_550722030_7_7", + "D_142912472_7_7", + "D_158409298_7_7", + "D_529744595_7_7", + "D_315987564_7_7", + "D_852278004_7_7", + "D_391972881_7_7", + "D_259089008_7_7", + "D_209771602_7_7", + "D_682651189_7_7", + "D_750994269_7_7", + "D_700889863_7_7", + "D_990114799_7_7", + "D_195363361_7_7", + "D_216840563_7_7", + "D_514034680_7_7", + "D_247160067_7_7", + "D_312545873_7_7", + "D_890637099_8_8", + "D_869387390_8_8", + "D_537137982_8_8", + "D_607773106_8_8", + "_CONTINUE1_8_8", + "D_578895128_8_8", + "D_384881609_8_8", + "D_483975329_8_8", + "D_570279754_8_8", + "D_907590067_8_8", + "D_860112841_8_8", + "D_158354252_8_8", + "D_654594205_8_8", + "D_550722030_8_8", + "D_142912472_8_8", + "D_158409298_8_8", + "D_529744595_8_8", + "D_315987564_8_8", + "D_852278004_8_8", + "D_391972881_8_8", + "D_259089008_8_8", + "D_209771602_8_8", + "D_682651189_8_8", + "D_750994269_8_8", + "D_700889863_8_8", + "D_990114799_8_8", + "D_195363361_8_8", + "D_216840563_8_8", + "D_514034680_8_8", + "D_247160067_8_8", + "D_312545873_8_8", + "D_890637099_9_9", + "D_869387390_9_9", + "D_537137982_9_9", + "D_607773106_9_9", + "_CONTINUE1_9_9", + "D_578895128_9_9", + "D_384881609_9_9", + "D_483975329_9_9", + "D_570279754_9_9", + "D_907590067_9_9", + "D_860112841_9_9", + "D_158354252_9_9", + "D_654594205_9_9", + "D_550722030_9_9", + "D_142912472_9_9", + "D_158409298_9_9", + "D_529744595_9_9", + "D_315987564_9_9", + "D_852278004_9_9", + "D_391972881_9_9", + "D_259089008_9_9", + "D_209771602_9_9", + "D_682651189_9_9", + "D_750994269_9_9", + "D_700889863_9_9", + "D_990114799_9_9", + "D_195363361_9_9", + "D_216840563_9_9", + "D_514034680_9_9", + "D_247160067_9_9", + "D_312545873_9_9", + "D_890637099_10_10", + "D_869387390_10_10", + "D_537137982_10_10", + "D_607773106_10_10", + "_CONTINUE1_10_10", + "D_578895128_10_10", + "D_384881609_10_10", + "D_483975329_10_10", + "D_570279754_10_10", + "D_907590067_10_10", + "D_860112841_10_10", + "D_158354252_10_10", + "D_654594205_10_10", + "D_550722030_10_10", + "D_142912472_10_10", + "D_158409298_10_10", + "D_529744595_10_10", + "D_315987564_10_10", + "D_852278004_10_10", + "D_391972881_10_10", + "D_259089008_10_10", + "D_209771602_10_10", + "D_682651189_10_10", + "D_750994269_10_10", + "D_700889863_10_10", + "D_990114799_10_10", + "D_195363361_10_10", + "D_216840563_10_10", + "D_514034680_10_10", + "D_247160067_10_10", + "D_312545873_10_10", + "D_890637099_11_11", + "D_869387390_11_11", + "D_537137982_11_11", + "D_607773106_11_11", + "_CONTINUE1_11_11", + "D_578895128_11_11", + "D_384881609_11_11", + "D_483975329_11_11", + "D_570279754_11_11", + "D_907590067_11_11", + "D_860112841_11_11", + "D_158354252_11_11", + "D_654594205_11_11", + "D_550722030_11_11", + "D_142912472_11_11", + "D_158409298_11_11", + "D_529744595_11_11", + "D_315987564_11_11", + "D_852278004_11_11", + "D_391972881_11_11", + "D_259089008_11_11", + "D_209771602_11_11", + "D_682651189_11_11", + "D_750994269_11_11", + "D_700889863_11_11", + "D_990114799_11_11", + "D_195363361_11_11", + "D_216840563_11_11", + "D_514034680_11_11", + "D_247160067_11_11", + "D_312545873_11_11", + "D_890637099_12_12", + "D_869387390_12_12", + "D_537137982_12_12", + "D_607773106_12_12", + "_CONTINUE1_12_12", + "D_578895128_12_12", + "D_384881609_12_12", + "D_483975329_12_12", + "D_570279754_12_12", + "D_907590067_12_12", + "D_860112841_12_12", + "D_158354252_12_12", + "D_654594205_12_12", + "D_550722030_12_12", + "D_142912472_12_12", + "D_158409298_12_12", + "D_529744595_12_12", + "D_315987564_12_12", + "D_852278004_12_12", + "D_391972881_12_12", + "D_259089008_12_12", + "D_209771602_12_12", + "D_682651189_12_12", + "D_750994269_12_12", + "D_700889863_12_12", + "D_990114799_12_12", + "D_195363361_12_12", + "D_216840563_12_12", + "D_514034680_12_12", + "D_247160067_12_12", + "D_312545873_12_12", + "D_890637099_13_13", + "D_869387390_13_13", + "D_537137982_13_13", + "D_607773106_13_13", + "_CONTINUE1_13_13", + "D_578895128_13_13", + "D_384881609_13_13", + "D_483975329_13_13", + "D_570279754_13_13", + "D_907590067_13_13", + "D_860112841_13_13", + "D_158354252_13_13", + "D_654594205_13_13", + "D_550722030_13_13", + "D_142912472_13_13", + "D_158409298_13_13", + "D_529744595_13_13", + "D_315987564_13_13", + "D_852278004_13_13", + "D_391972881_13_13", + "D_259089008_13_13", + "D_209771602_13_13", + "D_682651189_13_13", + "D_750994269_13_13", + "D_700889863_13_13", + "D_990114799_13_13", + "D_195363361_13_13", + "D_216840563_13_13", + "D_514034680_13_13", + "D_247160067_13_13", + "D_312545873_13_13", + "D_890637099_14_14", + "D_869387390_14_14", + "D_537137982_14_14", + "D_607773106_14_14", + "_CONTINUE1_14_14", + "D_578895128_14_14", + "D_384881609_14_14", + "D_483975329_14_14", + "D_570279754_14_14", + "D_907590067_14_14", + "D_860112841_14_14", + "D_158354252_14_14", + "D_654594205_14_14", + "D_550722030_14_14", + "D_142912472_14_14", + "D_158409298_14_14", + "D_529744595_14_14", + "D_315987564_14_14", + "D_852278004_14_14", + "D_391972881_14_14", + "D_259089008_14_14", + "D_209771602_14_14", + "D_682651189_14_14", + "D_750994269_14_14", + "D_700889863_14_14", + "D_990114799_14_14", + "D_195363361_14_14", + "D_216840563_14_14", + "D_514034680_14_14", + "D_247160067_14_14", + "D_312545873_14_14", + "D_890637099_15_15", + "D_869387390_15_15", + "D_537137982_15_15", + "D_607773106_15_15", + "_CONTINUE1_15_15", + "D_578895128_15_15", + "D_384881609_15_15", + "D_483975329_15_15", + "D_570279754_15_15", + "D_907590067_15_15", + "D_860112841_15_15", + "D_158354252_15_15", + "D_654594205_15_15", + "D_550722030_15_15", + "D_142912472_15_15", + "D_158409298_15_15", + "D_529744595_15_15", + "D_315987564_15_15", + "D_852278004_15_15", + "D_391972881_15_15", + "D_259089008_15_15", + "D_209771602_15_15", + "D_682651189_15_15", + "D_750994269_15_15", + "D_700889863_15_15", + "D_990114799_15_15", + "D_195363361_15_15", + "D_216840563_15_15", + "D_514034680_15_15", + "D_247160067_15_15", + "D_312545873_15_15", + "D_890637099_16_16", + "D_869387390_16_16", + "D_537137982_16_16", + "D_607773106_16_16", + "_CONTINUE1_16_16", + "D_578895128_16_16", + "D_384881609_16_16", + "D_483975329_16_16", + "D_570279754_16_16", + "D_907590067_16_16", + "D_860112841_16_16", + "D_158354252_16_16", + "D_654594205_16_16", + "D_550722030_16_16", + "D_142912472_16_16", + "D_158409298_16_16", + "D_529744595_16_16", + "D_315987564_16_16", + "D_852278004_16_16", + "D_391972881_16_16", + "D_259089008_16_16", + "D_209771602_16_16", + "D_682651189_16_16", + "D_750994269_16_16", + "D_700889863_16_16", + "D_990114799_16_16", + "D_195363361_16_16", + "D_216840563_16_16", + "D_514034680_16_16", + "D_247160067_16_16", + "D_312545873_16_16", + "D_890637099_17_17", + "D_869387390_17_17", + "D_537137982_17_17", + "D_607773106_17_17", + "_CONTINUE1_17_17", + "D_578895128_17_17", + "D_384881609_17_17", + "D_483975329_17_17", + "D_570279754_17_17", + "D_907590067_17_17", + "D_860112841_17_17", + "D_158354252_17_17", + "D_654594205_17_17", + "D_550722030_17_17", + "D_142912472_17_17", + "D_158409298_17_17", + "D_529744595_17_17", + "D_315987564_17_17", + "D_852278004_17_17", + "D_391972881_17_17", + "D_259089008_17_17", + "D_209771602_17_17", + "D_682651189_17_17", + "D_750994269_17_17", + "D_700889863_17_17", + "D_990114799_17_17", + "D_195363361_17_17", + "D_216840563_17_17", + "D_514034680_17_17", + "D_247160067_17_17", + "D_312545873_17_17", + "D_890637099_18_18", + "D_869387390_18_18", + "D_537137982_18_18", + "D_607773106_18_18", + "_CONTINUE1_18_18", + "D_578895128_18_18", + "D_384881609_18_18", + "D_483975329_18_18", + "D_570279754_18_18", + "D_907590067_18_18", + "D_860112841_18_18", + "D_158354252_18_18", + "D_654594205_18_18", + "D_550722030_18_18", + "D_142912472_18_18", + "D_158409298_18_18", + "D_529744595_18_18", + "D_315987564_18_18", + "D_852278004_18_18", + "D_391972881_18_18", + "D_259089008_18_18", + "D_209771602_18_18", + "D_682651189_18_18", + "D_750994269_18_18", + "D_700889863_18_18", + "D_990114799_18_18", + "D_195363361_18_18", + "D_216840563_18_18", + "D_514034680_18_18", + "D_247160067_18_18", + "D_312545873_18_18", + "D_890637099_19_19", + "D_869387390_19_19", + "D_537137982_19_19", + "D_607773106_19_19", + "_CONTINUE1_19_19", + "D_578895128_19_19", + "D_384881609_19_19", + "D_483975329_19_19", + "D_570279754_19_19", + "D_907590067_19_19", + "D_860112841_19_19", + "D_158354252_19_19", + "D_654594205_19_19", + "D_550722030_19_19", + "D_142912472_19_19", + "D_158409298_19_19", + "D_529744595_19_19", + "D_315987564_19_19", + "D_852278004_19_19", + "D_391972881_19_19", + "D_259089008_19_19", + "D_209771602_19_19", + "D_682651189_19_19", + "D_750994269_19_19", + "D_700889863_19_19", + "D_990114799_19_19", + "D_195363361_19_19", + "D_216840563_19_19", + "D_514034680_19_19", + "D_247160067_19_19", + "D_312545873_19_19", + "D_890637099_20_20", + "D_869387390_20_20", + "D_537137982_20_20", + "D_607773106_20_20", + "_CONTINUE1_20_20", + "D_578895128_20_20", + "D_384881609_20_20", + "D_483975329_20_20", + "D_570279754_20_20", + "D_907590067_20_20", + "D_860112841_20_20", + "D_158354252_20_20", + "D_654594205_20_20", + "D_550722030_20_20", + "D_142912472_20_20", + "D_158409298_20_20", + "D_529744595_20_20", + "D_315987564_20_20", + "D_852278004_20_20", + "D_391972881_20_20", + "D_259089008_20_20", + "D_209771602_20_20", + "D_682651189_20_20", + "D_750994269_20_20", + "D_700889863_20_20", + "D_990114799_20_20", + "D_195363361_20_20", + "D_216840563_20_20", + "D_514034680_20_20", + "D_247160067_20_20", + "D_312545873_20_20", + "D_890637099_21_21", + "D_869387390_21_21", + "D_537137982_21_21", + "D_607773106_21_21", + "_CONTINUE1_21_21", + "D_578895128_21_21", + "D_384881609_21_21", + "D_483975329_21_21", + "D_570279754_21_21", + "D_907590067_21_21", + "D_860112841_21_21", + "D_158354252_21_21", + "D_654594205_21_21", + "D_550722030_21_21", + "D_142912472_21_21", + "D_158409298_21_21", + "D_529744595_21_21", + "D_315987564_21_21", + "D_852278004_21_21", + "D_391972881_21_21", + "D_259089008_21_21", + "D_209771602_21_21", + "D_682651189_21_21", + "D_750994269_21_21", + "D_700889863_21_21", + "D_990114799_21_21", + "D_195363361_21_21", + "D_216840563_21_21", + "D_514034680_21_21", + "D_247160067_21_21", + "D_312545873_21_21", + "D_890637099_22_22", + "D_869387390_22_22", + "D_537137982_22_22", + "D_607773106_22_22", + "_CONTINUE1_22_22", + "D_578895128_22_22", + "D_384881609_22_22", + "D_483975329_22_22", + "D_570279754_22_22", + "D_907590067_22_22", + "D_860112841_22_22", + "D_158354252_22_22", + "D_654594205_22_22", + "D_550722030_22_22", + "D_142912472_22_22", + "D_158409298_22_22", + "D_529744595_22_22", + "D_315987564_22_22", + "D_852278004_22_22", + "D_391972881_22_22", + "D_259089008_22_22", + "D_209771602_22_22", + "D_682651189_22_22", + "D_750994269_22_22", + "D_700889863_22_22", + "D_990114799_22_22", + "D_195363361_22_22", + "D_216840563_22_22", + "D_514034680_22_22", + "D_247160067_22_22", + "D_312545873_22_22", + "D_890637099_23_23", + "D_869387390_23_23", + "D_537137982_23_23", + "D_607773106_23_23", + "_CONTINUE1_23_23", + "D_578895128_23_23", + "D_384881609_23_23", + "D_483975329_23_23", + "D_570279754_23_23", + "D_907590067_23_23", + "D_860112841_23_23", + "D_158354252_23_23", + "D_654594205_23_23", + "D_550722030_23_23", + "D_142912472_23_23", + "D_158409298_23_23", + "D_529744595_23_23", + "D_315987564_23_23", + "D_852278004_23_23", + "D_391972881_23_23", + "D_259089008_23_23", + "D_209771602_23_23", + "D_682651189_23_23", + "D_750994269_23_23", + "D_700889863_23_23", + "D_990114799_23_23", + "D_195363361_23_23", + "D_216840563_23_23", + "D_514034680_23_23", + "D_247160067_23_23", + "D_312545873_23_23", + "D_890637099_24_24", + "D_869387390_24_24", + "D_537137982_24_24", + "D_607773106_24_24", + "_CONTINUE1_24_24", + "D_578895128_24_24", + "D_384881609_24_24", + "D_483975329_24_24", + "D_570279754_24_24", + "D_907590067_24_24", + "D_860112841_24_24", + "D_158354252_24_24", + "D_654594205_24_24", + "D_550722030_24_24", + "D_142912472_24_24", + "D_158409298_24_24", + "D_529744595_24_24", + "D_315987564_24_24", + "D_852278004_24_24", + "D_391972881_24_24", + "D_259089008_24_24", + "D_209771602_24_24", + "D_682651189_24_24", + "D_750994269_24_24", + "D_700889863_24_24", + "D_990114799_24_24", + "D_195363361_24_24", + "D_216840563_24_24", + "D_514034680_24_24", + "D_247160067_24_24", + "D_312545873_24_24", + "D_890637099_25_25", + "D_869387390_25_25", + "D_537137982_25_25", + "D_607773106_25_25", + "_CONTINUE1_25_25", + "D_578895128_25_25", + "D_384881609_25_25", + "D_483975329_25_25", + "D_570279754_25_25", + "D_907590067_25_25", + "D_860112841_25_25", + "D_158354252_25_25", + "D_654594205_25_25", + "D_550722030_25_25", + "D_142912472_25_25", + "D_158409298_25_25", + "D_529744595_25_25", + "D_315987564_25_25", + "D_852278004_25_25", + "D_391972881_25_25", + "D_259089008_25_25", + "D_209771602_25_25", + "D_682651189_25_25", + "D_750994269_25_25", + "D_700889863_25_25", + "D_990114799_25_25", + "D_195363361_25_25", + "D_216840563_25_25", + "D_514034680_25_25", + "D_247160067_25_25", + "D_312545873_25_25", + "D_640010727_1_1", + "D_236590500_1_1", + "D_718867914_1_1", + "_CONTINUE2_1_1", + "D_812370563_1_1", + "D_900939817_1_1", + "D_938150507_1_1", + "D_601211723_1_1", + "D_861788020_1_1", + "D_204425387_1_1", + "D_558929585_1_1", + "D_233764880_1_1", + "D_905145893_1_1", + "D_473190270_1_1", + "D_483735587_1_1", + "D_331759900_1_1", + "D_513077276_1_1", + "D_519974530_1_1", + "D_907776050_1_1", + "D_271684775_1_1", + "D_252160589_1_1", + "D_774774759_1_1", + "D_127257956_1_1", + "D_496917282_1_1", + "D_908129316_1_1", + "D_795003496_1_1", + "D_969177591_1_1", + "D_116065851_1_1", + "D_278159347_1_1", + "D_845219872_1_1", + "D_640010727_2_2", + "D_236590500_2_2", + "D_718867914_2_2", + "_CONTINUE2_2_2", + "D_812370563_2_2", + "D_900939817_2_2", + "D_938150507_2_2", + "D_601211723_2_2", + "D_861788020_2_2", + "D_204425387_2_2", + "D_558929585_2_2", + "D_233764880_2_2", + "D_905145893_2_2", + "D_473190270_2_2", + "D_483735587_2_2", + "D_331759900_2_2", + "D_513077276_2_2", + "D_519974530_2_2", + "D_907776050_2_2", + "D_271684775_2_2", + "D_252160589_2_2", + "D_774774759_2_2", + "D_127257956_2_2", + "D_496917282_2_2", + "D_908129316_2_2", + "D_795003496_2_2", + "D_969177591_2_2", + "D_116065851_2_2", + "D_278159347_2_2", + "D_845219872_2_2", + "D_640010727_3_3", + "D_236590500_3_3", + "D_718867914_3_3", + "_CONTINUE2_3_3", + "D_812370563_3_3", + "D_900939817_3_3", + "D_938150507_3_3", + "D_601211723_3_3", + "D_861788020_3_3", + "D_204425387_3_3", + "D_558929585_3_3", + "D_233764880_3_3", + "D_905145893_3_3", + "D_473190270_3_3", + "D_483735587_3_3", + "D_331759900_3_3", + "D_513077276_3_3", + "D_519974530_3_3", + "D_907776050_3_3", + "D_271684775_3_3", + "D_252160589_3_3", + "D_774774759_3_3", + "D_127257956_3_3", + "D_496917282_3_3", + "D_908129316_3_3", + "D_795003496_3_3", + "D_969177591_3_3", + "D_116065851_3_3", + "D_278159347_3_3", + "D_845219872_3_3", + "D_640010727_4_4", + "D_236590500_4_4", + "D_718867914_4_4", + "_CONTINUE2_4_4", + "D_812370563_4_4", + "D_900939817_4_4", + "D_938150507_4_4", + "D_601211723_4_4", + "D_861788020_4_4", + "D_204425387_4_4", + "D_558929585_4_4", + "D_233764880_4_4", + "D_905145893_4_4", + "D_473190270_4_4", + "D_483735587_4_4", + "D_331759900_4_4", + "D_513077276_4_4", + "D_519974530_4_4", + "D_907776050_4_4", + "D_271684775_4_4", + "D_252160589_4_4", + "D_774774759_4_4", + "D_127257956_4_4", + "D_496917282_4_4", + "D_908129316_4_4", + "D_795003496_4_4", + "D_969177591_4_4", + "D_116065851_4_4", + "D_278159347_4_4", + "D_845219872_4_4", + "D_640010727_5_5", + "D_236590500_5_5", + "D_718867914_5_5", + "_CONTINUE2_5_5", + "D_812370563_5_5", + "D_900939817_5_5", + "D_938150507_5_5", + "D_601211723_5_5", + "D_861788020_5_5", + "D_204425387_5_5", + "D_558929585_5_5", + "D_233764880_5_5", + "D_905145893_5_5", + "D_473190270_5_5", + "D_483735587_5_5", + "D_331759900_5_5", + "D_513077276_5_5", + "D_519974530_5_5", + "D_907776050_5_5", + "D_271684775_5_5", + "D_252160589_5_5", + "D_774774759_5_5", + "D_127257956_5_5", + "D_496917282_5_5", + "D_908129316_5_5", + "D_795003496_5_5", + "D_969177591_5_5", + "D_116065851_5_5", + "D_278159347_5_5", + "D_845219872_5_5", + "D_640010727_6_6", + "D_236590500_6_6", + "D_718867914_6_6", + "_CONTINUE2_6_6", + "D_812370563_6_6", + "D_900939817_6_6", + "D_938150507_6_6", + "D_601211723_6_6", + "D_861788020_6_6", + "D_204425387_6_6", + "D_558929585_6_6", + "D_233764880_6_6", + "D_905145893_6_6", + "D_473190270_6_6", + "D_483735587_6_6", + "D_331759900_6_6", + "D_513077276_6_6", + "D_519974530_6_6", + "D_907776050_6_6", + "D_271684775_6_6", + "D_252160589_6_6", + "D_774774759_6_6", + "D_127257956_6_6", + "D_496917282_6_6", + "D_908129316_6_6", + "D_795003496_6_6", + "D_969177591_6_6", + "D_116065851_6_6", + "D_278159347_6_6", + "D_845219872_6_6", + "D_640010727_7_7", + "D_236590500_7_7", + "D_718867914_7_7", + "_CONTINUE2_7_7", + "D_812370563_7_7", + "D_900939817_7_7", + "D_938150507_7_7", + "D_601211723_7_7", + "D_861788020_7_7", + "D_204425387_7_7", + "D_558929585_7_7", + "D_233764880_7_7", + "D_905145893_7_7", + "D_473190270_7_7", + "D_483735587_7_7", + "D_331759900_7_7", + "D_513077276_7_7", + "D_519974530_7_7", + "D_907776050_7_7", + "D_271684775_7_7", + "D_252160589_7_7", + "D_774774759_7_7", + "D_127257956_7_7", + "D_496917282_7_7", + "D_908129316_7_7", + "D_795003496_7_7", + "D_969177591_7_7", + "D_116065851_7_7", + "D_278159347_7_7", + "D_845219872_7_7", + "D_640010727_8_8", + "D_236590500_8_8", + "D_718867914_8_8", + "_CONTINUE2_8_8", + "D_812370563_8_8", + "D_900939817_8_8", + "D_938150507_8_8", + "D_601211723_8_8", + "D_861788020_8_8", + "D_204425387_8_8", + "D_558929585_8_8", + "D_233764880_8_8", + "D_905145893_8_8", + "D_473190270_8_8", + "D_483735587_8_8", + "D_331759900_8_8", + "D_513077276_8_8", + "D_519974530_8_8", + "D_907776050_8_8", + "D_271684775_8_8", + "D_252160589_8_8", + "D_774774759_8_8", + "D_127257956_8_8", + "D_496917282_8_8", + "D_908129316_8_8", + "D_795003496_8_8", + "D_969177591_8_8", + "D_116065851_8_8", + "D_278159347_8_8", + "D_845219872_8_8", + "D_640010727_9_9", + "D_236590500_9_9", + "D_718867914_9_9", + "_CONTINUE2_9_9", + "D_812370563_9_9", + "D_900939817_9_9", + "D_938150507_9_9", + "D_601211723_9_9", + "D_861788020_9_9", + "D_204425387_9_9", + "D_558929585_9_9", + "D_233764880_9_9", + "D_905145893_9_9", + "D_473190270_9_9", + "D_483735587_9_9", + "D_331759900_9_9", + "D_513077276_9_9", + "D_519974530_9_9", + "D_907776050_9_9", + "D_271684775_9_9", + "D_252160589_9_9", + "D_774774759_9_9", + "D_127257956_9_9", + "D_496917282_9_9", + "D_908129316_9_9", + "D_795003496_9_9", + "D_969177591_9_9", + "D_116065851_9_9", + "D_278159347_9_9", + "D_845219872_9_9", + "D_640010727_10_10", + "D_236590500_10_10", + "D_718867914_10_10", + "_CONTINUE2_10_10", + "D_812370563_10_10", + "D_900939817_10_10", + "D_938150507_10_10", + "D_601211723_10_10", + "D_861788020_10_10", + "D_204425387_10_10", + "D_558929585_10_10", + "D_233764880_10_10", + "D_905145893_10_10", + "D_473190270_10_10", + "D_483735587_10_10", + "D_331759900_10_10", + "D_513077276_10_10", + "D_519974530_10_10", + "D_907776050_10_10", + "D_271684775_10_10", + "D_252160589_10_10", + "D_774774759_10_10", + "D_127257956_10_10", + "D_496917282_10_10", + "D_908129316_10_10", + "D_795003496_10_10", + "D_969177591_10_10", + "D_116065851_10_10", + "D_278159347_10_10", + "D_845219872_10_10", + "D_640010727_11_11", + "D_236590500_11_11", + "D_718867914_11_11", + "_CONTINUE2_11_11", + "D_812370563_11_11", + "D_900939817_11_11", + "D_938150507_11_11", + "D_601211723_11_11", + "D_861788020_11_11", + "D_204425387_11_11", + "D_558929585_11_11", + "D_233764880_11_11", + "D_905145893_11_11", + "D_473190270_11_11", + "D_483735587_11_11", + "D_331759900_11_11", + "D_513077276_11_11", + "D_519974530_11_11", + "D_907776050_11_11", + "D_271684775_11_11", + "D_252160589_11_11", + "D_774774759_11_11", + "D_127257956_11_11", + "D_496917282_11_11", + "D_908129316_11_11", + "D_795003496_11_11", + "D_969177591_11_11", + "D_116065851_11_11", + "D_278159347_11_11", + "D_845219872_11_11", + "D_640010727_12_12", + "D_236590500_12_12", + "D_718867914_12_12", + "_CONTINUE2_12_12", + "D_812370563_12_12", + "D_900939817_12_12", + "D_938150507_12_12", + "D_601211723_12_12", + "D_861788020_12_12", + "D_204425387_12_12", + "D_558929585_12_12", + "D_233764880_12_12", + "D_905145893_12_12", + "D_473190270_12_12", + "D_483735587_12_12", + "D_331759900_12_12", + "D_513077276_12_12", + "D_519974530_12_12", + "D_907776050_12_12", + "D_271684775_12_12", + "D_252160589_12_12", + "D_774774759_12_12", + "D_127257956_12_12", + "D_496917282_12_12", + "D_908129316_12_12", + "D_795003496_12_12", + "D_969177591_12_12", + "D_116065851_12_12", + "D_278159347_12_12", + "D_845219872_12_12", + "D_640010727_13_13", + "D_236590500_13_13", + "D_718867914_13_13", + "_CONTINUE2_13_13", + "D_812370563_13_13", + "D_900939817_13_13", + "D_938150507_13_13", + "D_601211723_13_13", + "D_861788020_13_13", + "D_204425387_13_13", + "D_558929585_13_13", + "D_233764880_13_13", + "D_905145893_13_13", + "D_473190270_13_13", + "D_483735587_13_13", + "D_331759900_13_13", + "D_513077276_13_13", + "D_519974530_13_13", + "D_907776050_13_13", + "D_271684775_13_13", + "D_252160589_13_13", + "D_774774759_13_13", + "D_127257956_13_13", + "D_496917282_13_13", + "D_908129316_13_13", + "D_795003496_13_13", + "D_969177591_13_13", + "D_116065851_13_13", + "D_278159347_13_13", + "D_845219872_13_13", + "D_640010727_14_14", + "D_236590500_14_14", + "D_718867914_14_14", + "_CONTINUE2_14_14", + "D_812370563_14_14", + "D_900939817_14_14", + "D_938150507_14_14", + "D_601211723_14_14", + "D_861788020_14_14", + "D_204425387_14_14", + "D_558929585_14_14", + "D_233764880_14_14", + "D_905145893_14_14", + "D_473190270_14_14", + "D_483735587_14_14", + "D_331759900_14_14", + "D_513077276_14_14", + "D_519974530_14_14", + "D_907776050_14_14", + "D_271684775_14_14", + "D_252160589_14_14", + "D_774774759_14_14", + "D_127257956_14_14", + "D_496917282_14_14", + "D_908129316_14_14", + "D_795003496_14_14", + "D_969177591_14_14", + "D_116065851_14_14", + "D_278159347_14_14", + "D_845219872_14_14", + "D_640010727_15_15", + "D_236590500_15_15", + "D_718867914_15_15", + "_CONTINUE2_15_15", + "D_812370563_15_15", + "D_900939817_15_15", + "D_938150507_15_15", + "D_601211723_15_15", + "D_861788020_15_15", + "D_204425387_15_15", + "D_558929585_15_15", + "D_233764880_15_15", + "D_905145893_15_15", + "D_473190270_15_15", + "D_483735587_15_15", + "D_331759900_15_15", + "D_513077276_15_15", + "D_519974530_15_15", + "D_907776050_15_15", + "D_271684775_15_15", + "D_252160589_15_15", + "D_774774759_15_15", + "D_127257956_15_15", + "D_496917282_15_15", + "D_908129316_15_15", + "D_795003496_15_15", + "D_969177591_15_15", + "D_116065851_15_15", + "D_278159347_15_15", + "D_845219872_15_15", + "D_640010727_16_16", + "D_236590500_16_16", + "D_718867914_16_16", + "_CONTINUE2_16_16", + "D_812370563_16_16", + "D_900939817_16_16", + "D_938150507_16_16", + "D_601211723_16_16", + "D_861788020_16_16", + "D_204425387_16_16", + "D_558929585_16_16", + "D_233764880_16_16", + "D_905145893_16_16", + "D_473190270_16_16", + "D_483735587_16_16", + "D_331759900_16_16", + "D_513077276_16_16", + "D_519974530_16_16", + "D_907776050_16_16", + "D_271684775_16_16", + "D_252160589_16_16", + "D_774774759_16_16", + "D_127257956_16_16", + "D_496917282_16_16", + "D_908129316_16_16", + "D_795003496_16_16", + "D_969177591_16_16", + "D_116065851_16_16", + "D_278159347_16_16", + "D_845219872_16_16", + "D_640010727_17_17", + "D_236590500_17_17", + "D_718867914_17_17", + "_CONTINUE2_17_17", + "D_812370563_17_17", + "D_900939817_17_17", + "D_938150507_17_17", + "D_601211723_17_17", + "D_861788020_17_17", + "D_204425387_17_17", + "D_558929585_17_17", + "D_233764880_17_17", + "D_905145893_17_17", + "D_473190270_17_17", + "D_483735587_17_17", + "D_331759900_17_17", + "D_513077276_17_17", + "D_519974530_17_17", + "D_907776050_17_17", + "D_271684775_17_17", + "D_252160589_17_17", + "D_774774759_17_17", + "D_127257956_17_17", + "D_496917282_17_17", + "D_908129316_17_17", + "D_795003496_17_17", + "D_969177591_17_17", + "D_116065851_17_17", + "D_278159347_17_17", + "D_845219872_17_17", + "D_640010727_18_18", + "D_236590500_18_18", + "D_718867914_18_18", + "_CONTINUE2_18_18", + "D_812370563_18_18", + "D_900939817_18_18", + "D_938150507_18_18", + "D_601211723_18_18", + "D_861788020_18_18", + "D_204425387_18_18", + "D_558929585_18_18", + "D_233764880_18_18", + "D_905145893_18_18", + "D_473190270_18_18", + "D_483735587_18_18", + "D_331759900_18_18", + "D_513077276_18_18", + "D_519974530_18_18", + "D_907776050_18_18", + "D_271684775_18_18", + "D_252160589_18_18", + "D_774774759_18_18", + "D_127257956_18_18", + "D_496917282_18_18", + "D_908129316_18_18", + "D_795003496_18_18", + "D_969177591_18_18", + "D_116065851_18_18", + "D_278159347_18_18", + "D_845219872_18_18", + "D_640010727_19_19", + "D_236590500_19_19", + "D_718867914_19_19", + "_CONTINUE2_19_19", + "D_812370563_19_19", + "D_900939817_19_19", + "D_938150507_19_19", + "D_601211723_19_19", + "D_861788020_19_19", + "D_204425387_19_19", + "D_558929585_19_19", + "D_233764880_19_19", + "D_905145893_19_19", + "D_473190270_19_19", + "D_483735587_19_19", + "D_331759900_19_19", + "D_513077276_19_19", + "D_519974530_19_19", + "D_907776050_19_19", + "D_271684775_19_19", + "D_252160589_19_19", + "D_774774759_19_19", + "D_127257956_19_19", + "D_496917282_19_19", + "D_908129316_19_19", + "D_795003496_19_19", + "D_969177591_19_19", + "D_116065851_19_19", + "D_278159347_19_19", + "D_845219872_19_19", + "D_640010727_20_20", + "D_236590500_20_20", + "D_718867914_20_20", + "_CONTINUE2_20_20", + "D_812370563_20_20", + "D_900939817_20_20", + "D_938150507_20_20", + "D_601211723_20_20", + "D_861788020_20_20", + "D_204425387_20_20", + "D_558929585_20_20", + "D_233764880_20_20", + "D_905145893_20_20", + "D_473190270_20_20", + "D_483735587_20_20", + "D_331759900_20_20", + "D_513077276_20_20", + "D_519974530_20_20", + "D_907776050_20_20", + "D_271684775_20_20", + "D_252160589_20_20", + "D_774774759_20_20", + "D_127257956_20_20", + "D_496917282_20_20", + "D_908129316_20_20", + "D_795003496_20_20", + "D_969177591_20_20", + "D_116065851_20_20", + "D_278159347_20_20", + "D_845219872_20_20", + "D_640010727_21_21", + "D_236590500_21_21", + "D_718867914_21_21", + "_CONTINUE2_21_21", + "D_812370563_21_21", + "D_900939817_21_21", + "D_938150507_21_21", + "D_601211723_21_21", + "D_861788020_21_21", + "D_204425387_21_21", + "D_558929585_21_21", + "D_233764880_21_21", + "D_905145893_21_21", + "D_473190270_21_21", + "D_483735587_21_21", + "D_331759900_21_21", + "D_513077276_21_21", + "D_519974530_21_21", + "D_907776050_21_21", + "D_271684775_21_21", + "D_252160589_21_21", + "D_774774759_21_21", + "D_127257956_21_21", + "D_496917282_21_21", + "D_908129316_21_21", + "D_795003496_21_21", + "D_969177591_21_21", + "D_116065851_21_21", + "D_278159347_21_21", + "D_845219872_21_21", + "D_640010727_22_22", + "D_236590500_22_22", + "D_718867914_22_22", + "_CONTINUE2_22_22", + "D_812370563_22_22", + "D_900939817_22_22", + "D_938150507_22_22", + "D_601211723_22_22", + "D_861788020_22_22", + "D_204425387_22_22", + "D_558929585_22_22", + "D_233764880_22_22", + "D_905145893_22_22", + "D_473190270_22_22", + "D_483735587_22_22", + "D_331759900_22_22", + "D_513077276_22_22", + "D_519974530_22_22", + "D_907776050_22_22", + "D_271684775_22_22", + "D_252160589_22_22", + "D_774774759_22_22", + "D_127257956_22_22", + "D_496917282_22_22", + "D_908129316_22_22", + "D_795003496_22_22", + "D_969177591_22_22", + "D_116065851_22_22", + "D_278159347_22_22", + "D_845219872_22_22", + "D_640010727_23_23", + "D_236590500_23_23", + "D_718867914_23_23", + "_CONTINUE2_23_23", + "D_812370563_23_23", + "D_900939817_23_23", + "D_938150507_23_23", + "D_601211723_23_23", + "D_861788020_23_23", + "D_204425387_23_23", + "D_558929585_23_23", + "D_233764880_23_23", + "D_905145893_23_23", + "D_473190270_23_23", + "D_483735587_23_23", + "D_331759900_23_23", + "D_513077276_23_23", + "D_519974530_23_23", + "D_907776050_23_23", + "D_271684775_23_23", + "D_252160589_23_23", + "D_774774759_23_23", + "D_127257956_23_23", + "D_496917282_23_23", + "D_908129316_23_23", + "D_795003496_23_23", + "D_969177591_23_23", + "D_116065851_23_23", + "D_278159347_23_23", + "D_845219872_23_23", + "D_640010727_24_24", + "D_236590500_24_24", + "D_718867914_24_24", + "_CONTINUE2_24_24", + "D_812370563_24_24", + "D_900939817_24_24", + "D_938150507_24_24", + "D_601211723_24_24", + "D_861788020_24_24", + "D_204425387_24_24", + "D_558929585_24_24", + "D_233764880_24_24", + "D_905145893_24_24", + "D_473190270_24_24", + "D_483735587_24_24", + "D_331759900_24_24", + "D_513077276_24_24", + "D_519974530_24_24", + "D_907776050_24_24", + "D_271684775_24_24", + "D_252160589_24_24", + "D_774774759_24_24", + "D_127257956_24_24", + "D_496917282_24_24", + "D_908129316_24_24", + "D_795003496_24_24", + "D_969177591_24_24", + "D_116065851_24_24", + "D_278159347_24_24", + "D_845219872_24_24", + "D_640010727_25_25", + "D_236590500_25_25", + "D_718867914_25_25", + "_CONTINUE2_25_25", + "D_812370563_25_25", + "D_900939817_25_25", + "D_938150507_25_25", + "D_601211723_25_25", + "D_861788020_25_25", + "D_204425387_25_25", + "D_558929585_25_25", + "D_233764880_25_25", + "D_905145893_25_25", + "D_473190270_25_25", + "D_483735587_25_25", + "D_331759900_25_25", + "D_513077276_25_25", + "D_519974530_25_25", + "D_907776050_25_25", + "D_271684775_25_25", + "D_252160589_25_25", + "D_774774759_25_25", + "D_127257956_25_25", + "D_496917282_25_25", + "D_908129316_25_25", + "D_795003496_25_25", + "D_969177591_25_25", + "D_116065851_25_25", + "D_278159347_25_25", + "D_845219872_25_25", + "D_627122657", + "D_114529380", + "D_403258164", + "D_118061122", + "D_759004335" + ], + "byKind": { + "default": 59, + "no-response": 70, + "response": 1702 + }, + "byResolution": { + "exact": 1681, + "virtual-loop": 150 + }, + "triggerTypes": { + "checkbox": 1386, + "hidden": 129, + "radio": 316 + }, + "triggerValues": [ + "583826374", + "636411467", + "458435048", + "706998638", + "973565052", + "586825330", + "412790539", + "746038746", + "104430631", + "698944820", + "838744325", + "769790179", + "699553344", + "700811160", + "336505365", + "132548932", + "747787163", + "693851465", + "512012656", + "619337095", + "535003378", + "359025642", + "407340134", + "427219143", + "406890409", + "704544306", + "691766591", + "308645635", + "731115613", + "567284980", + "986548173", + "285995100", + "545628561", + "709786039", + "984479578", + "726539692", + "158044532", + "943054522", + "827542780", + "167238688", + "636030086", + "239687183", + "134592375", + "164910211", + "796616844", + "436689514", + "296357383", + "901077233", + "136956596", + "455776698", + "155874194", + "880962432", + "691450854", + "509721537", + "863286658", + "386524148", + "937208760", + "746542057", + "353358909", + "797189152", + "633546100", + "866002271", + "209101810", + "413734739", + "215525943", + "118789503", + "715563991", + "533491176", + "220755749", + "465318416", + "630100221", + "692881833", + "654450030", + "532603425", + "733236542", + "961987554", + "113771607", + "668256654", + "752953170", + "325506683", + "335563082", + "955881350", + "492902023", + "256196714", + "802859122", + "520432394", + "667901971", + "807835037", + "333647143", + "109972911", + "448068764", + "537173119", + "770550588", + "970716952", + "524029283", + "500023550", + "178420302", + "939782495", + "135725957", + "518416174", + "847945207", + "283025574", + "942970912", + "596122041", + "489400183", + "863246236", + "607793249", + "532172400", + "754745617", + "665036297", + "200837530", + "990319383", + "487917585", + "603181162", + "482225200", + "764891959", + "139822395", + "723614811", + "295976386", + "248374037" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_384191091,583826374)", + "equals(D_384191091,636411467)", + "equals(D_384191091,458435048)", + "equals(D_384191091,706998638)", + "equals(D_384191091,973565052)", + "equals(D_384191091,586825330)", + "equals(D_384191091,412790539)", + "equals(D_407056417,536341288)", + "equals(D_167101091,698944820)", + "equals(D_167101091,838744325)", + "equals(D_167101091,769790179)", + "equals(D_167101091,699553344)", + "equals(D_167101091,700811160)", + "equals(D_167101091,336505365)", + "equals(D_167101091,132548932)", + "equals(D_167101091,747787163)", + "equals(D_167101091,693851465)", + "equals(D_167101091,512012656)", + "equals(D_167101091,619337095)", + "equals(D_894259747,359025642)", + "equals(D_894259747,407340134)", + "equals(D_894259747,427219143)", + "equals(D_180961306,406890409)", + "equals(D_180961306,704544306)", + "equals(D_180961306,691766591)", + "equals(D_180961306,308645635)", + "equals(D_180961306,731115613)", + "equals(D_180961306,567284980)", + "equals(D_180961306,986548173)", + "equals(D_180961306,285995100)", + "equals(D_180961306,545628561)", + "equals(D_180961306,709786039)", + "equals(D_180961306,984479578)", + "equals(D_900541533,726539692)", + "equals(D_900541533,158044532)", + "equals(D_900541533,943054522)", + "equals(D_874046190,827542780)", + "equals(D_874046190,167238688)", + "equals(D_543728565,636030086)", + "equals(D_543728565,239687183)", + "equals(D_543728565,134592375)", + "equals(D_874709643,164910211)", + "equals(D_874709643,796616844)", + "equals(D_874709643,436689514)", + "equals(D_874709643,296357383)", + "equals(D_874709643,901077233)", + "equals(D_874709643,136956596)", + "equals(D_874709643,455776698)", + "equals(D_874709643,155874194)", + "equals(D_874709643,880962432)", + "equals(D_874709643,691450854)", + "equals(D_750420077,578416151)", + "equals(D_750420077,434651539)", + "equals(D_750420077,700100953)", + "equals(D_725626004,509721537)", + "equals(D_725626004,863286658)", + "equals(D_725626004,386524148)", + "equals(D_725626004,937208760)", + "equals(D_725626004,746542057)", + "equals(D_725626004,854945381)", + "equals(D_750420077,108025529)", + "and(equals(D_750420077,582784267),equals(D_750420077,751402477))", + "equals(D_750420077,751402477)", + "equals(D_750420077,582784267)", + "equals(D_624179836,797189152)", + "equals(D_624179836,633546100)", + "equals(D_624179836,866002271)", + "equals(D_624179836,209101810)", + "equals(D_624179836,413734739)", + "equals(D_624179836,215525943)", + "equals(D_624179836,118789503)", + "equals(D_624179836,715563991)", + "equals(D_624179836,533491176)", + "equals(D_517307064,752953170)", + "equals(D_517307064,325506683)", + "equals(D_517307064,335563082)", + "equals(D_517307064,955881350)", + "equals(D_517307064,492902023)", + "equals(D_517307064,256196714)", + "equals(D_517307064,802859122)", + "equals(D_517307064,520432394)", + "equals(D_517307064,667901971)", + "equals(D_517307064,807835037)", + "exists('D_942347130')", + "doesNotExist('D_942347130')", + "equals(D_624179836,220755749)", + "equals(D_624179836,465318416)", + "equals(D_624179836,630100221)", + "and(equals(D_624179836,630100221),or(equals(D_378892977,109972911),equals(D_378892977,333647143)))", + "equals(D_624179836,692881833)", + "and(equals(D_624179836,692881833),or(equals(D_224791140,537173119),equals(D_224791140,448068764)))", + "equals(D_624179836,654450030)", + "equals(D_624179836,532603425)", + "and(equals(D_624179836,532603425),or(equals(D_946504570,970716952),equals(D_946504570,770550588)))", + "equals(D_624179836,733236542)", + "and(equals(D_624179836,733236542),or(equals(D_107060069,500023550),equals(D_107060069,524029283)))", + "equals(D_624179836,961987554)", + "greaterThanOrEqual(D_795940097,1)", + "greaterThan(D_795940097,1)", + "_value('age') >=18", + "_value('age') >=25", + "_value('age') >=35", + "_value('age') >=45", + "_value('age') >=55", + "greaterThanOrEqual(percentDiff(D_821387277,D_121646540),.05)", + "greaterThanOrEqual(percentDiff(D_121646540,D_950080618),.05)", + "greaterThanOrEqual(percentDiff(D_950080618,D_407167089),.05)", + "greaterThanOrEqual(percentDiff(D_407167089,D_503154158),.05)", + "_value(\"age\") >= 40", + "valueIsOneOf(\"D_407056417\",536341288) and _value(\"age\") >= 40", + "valueIsOneOf(\"D_407056417\",654207589) and _value(\"age\") >= 40", + "equals(D_170440011,353358909)", + "doesNotEqual(D_170440011,353358909)", + "equals(D_814510313,939782495)", + "equals(D_814510313,135725957)", + "equals(D_814510313,518416174)", + "equals(D_814510313,847945207)", + "equals(D_814510313,283025574)", + "equals(D_814510313,942970912)", + "equals(D_814510313,596122041)", + "equals(D_814510313,489400183)", + "equals(D_814510313,863246236)", + "equals(D_814510313,607793249)", + "equals(D_814510313,532172400)", + "equals(D_814510313,754745617)", + "equals(D_814510313,665036297)", + "equals(D_814510313,200837530)", + "equals(D_814510313,990319383)", + "equals(D_814510313,487917585)", + "equals(D_814510313,603181162)", + "equals(D_814510313,482225200)", + "equals(D_814510313,764891959)", + "equals(D_814510313,139822395)", + "equals(D_814510313,723614811)", + "valueIsOneOf(\"D_814510313\",807835037) or valueLength(\"D_677702321\")>0", + "valueLength('D_677702321')>0", + "doesNotExist('D_677702321')", + "equals(D_814510313,178420302)", + "equals(D_367374606,353358909)", + "doesNotEqual(D_367374606,353358909)", + "equals(D_173240848,939782495)", + "equals(D_173240848,135725957)", + "equals(D_173240848,518416174)", + "equals(D_173240848,847945207)", + "equals(D_173240848,942970912)", + "equals(D_173240848,596122041)", + "equals(D_173240848,489400183)", + "equals(D_173240848,863246236)", + "equals(D_173240848,607793249)", + "equals(D_173240848,532172400)", + "equals(D_173240848,754745617)", + "equals(D_173240848,665036297)", + "equals(D_173240848,200837530)", + "equals(D_173240848,990319383)", + "equals(D_173240848,487917585)", + "equals(D_173240848,482225200)", + "equals(D_173240848,295976386)", + "equals(D_173240848,764891959)", + "equals(D_173240848,248374037)", + "equals(D_173240848,139822395)", + "valueIsOneOf(\"D_173240848\",807835037) or valueLength(\"D_195093589\")>0", + "valueLength('D_195093589')>0", + "doesNotExist('D_195093589')", + "equals(D_173240848,178420302)", + "isNotDefined(D_694265648,0)", + "or(equals(D_694265648,0),or(isNotDefined(D_694265648,0),greaterThanOrEqual(D_694265648,2)))", + "1==1", + "1>1", + "equals(isNotDefined(D_406098499_1_1,false),false)", + "doesNotEqual(isNotDefined(D_406098499_1_1,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_1_1,false),false),greaterThan(1,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_1_1,false),false),equals(1,1)),doesNotEqual(D_694265648,1))", + "valueIsOneOf(\"D_992987417\",353358909,288105839,626558982)", + "equals(D_890637099_1_1,353358909)", + "doesNotEqual(D_890637099_1_1,353358909)", + "equals(D_578895128_1_1,939782495)", + "equals(D_578895128_1_1,135725957)", + "equals(D_578895128_1_1,518416174)", + "equals(D_578895128_1_1,847945207)", + "equals(D_578895128_1_1,283025574)", + "equals(D_578895128_1_1,942970912)", + "equals(D_578895128_1_1,596122041)", + "equals(D_578895128_1_1,489400183)", + "equals(D_578895128_1_1,863246236)", + "equals(D_578895128_1_1,607793249)", + "equals(D_578895128_1_1,532172400)", + "equals(D_578895128_1_1,754745617)", + "equals(D_578895128_1_1,665036297)", + "equals(D_578895128_1_1,200837530)", + "equals(D_578895128_1_1,990319383)", + "equals(D_578895128_1_1,487917585)", + "equals(D_578895128_1_1,603181162)", + "equals(D_578895128_1_1,482225200)", + "equals(D_578895128_1_1,295976386)", + "equals(D_578895128_1_1,764891959)", + "equals(D_578895128_1_1,248374037)", + "equals(D_578895128_1_1,139822395)", + "equals(D_578895128_1_1,723614811)", + "equals(D_578895128_1_1,807835037)", + "exists('D_957429734_1_1')", + "doesNotExist('D_957429734_1_1')", + "equals(D_578895128_1_1,178420302)", + "selectionCount(\"D_578895128_1_1\",true)>0 or valueLength(\"D_957429734_1_1\")>0", + "valueLength('D_406098499_1_1')>0", + "equals(D_579563781_1_1,536341288)", + "equals(D_579563781_1_1,654207589)", + "equals(D_579563781_1_1,178420302)", + "allExist('D_807431780_1_1','D_578895128_1_1')", + "equals(D_807431780_1_1,353358909)", + "equals(D_807431780_1_1,104430631)", + "valueIsOneOf('D_589588769_1_1',555374628)", + "valueIsOneOf('D_589588769_1_1',871673221)", + "valueIsOneOf('D_589588769_1_1',198654048)", + "valueIsOneOf('D_807431780_1_1',353358909)", + "equals(D_607773106_1_1,104430631)", + "equals(D_607773106_1_1,353358909)", + "equals(D_607773106_1_1,178420302)", + "2==1", + "2>1", + "equals(isNotDefined(D_406098499_2_2,false),false)", + "doesNotEqual(isNotDefined(D_406098499_2_2,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_2_2,false),false),greaterThan(2,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_2_2,false),false),equals(2,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_2_2,353358909)", + "doesNotEqual(D_890637099_2_2,353358909)", + "equals(D_578895128_2_2,939782495)", + "equals(D_578895128_2_2,135725957)", + "equals(D_578895128_2_2,518416174)", + "equals(D_578895128_2_2,847945207)", + "equals(D_578895128_2_2,283025574)", + "equals(D_578895128_2_2,942970912)", + "equals(D_578895128_2_2,596122041)", + "equals(D_578895128_2_2,489400183)", + "equals(D_578895128_2_2,863246236)", + "equals(D_578895128_2_2,607793249)", + "equals(D_578895128_2_2,532172400)", + "equals(D_578895128_2_2,754745617)", + "equals(D_578895128_2_2,665036297)", + "equals(D_578895128_2_2,200837530)", + "equals(D_578895128_2_2,990319383)", + "equals(D_578895128_2_2,487917585)", + "equals(D_578895128_2_2,603181162)", + "equals(D_578895128_2_2,482225200)", + "equals(D_578895128_2_2,295976386)", + "equals(D_578895128_2_2,764891959)", + "equals(D_578895128_2_2,248374037)", + "equals(D_578895128_2_2,139822395)", + "equals(D_578895128_2_2,723614811)", + "equals(D_578895128_2_2,807835037)", + "exists('D_957429734_2_2')", + "doesNotExist('D_957429734_2_2')", + "equals(D_578895128_2_2,178420302)", + "selectionCount(\"D_578895128_2_2\",true)>0 or valueLength(\"D_957429734_2_2\")>0", + "valueLength('D_406098499_2_2')>0", + "equals(D_579563781_2_2,536341288)", + "equals(D_579563781_2_2,654207589)", + "equals(D_579563781_2_2,178420302)", + "allExist('D_807431780_2_2','D_578895128_2_2')", + "equals(D_807431780_2_2,353358909)", + "equals(D_807431780_2_2,104430631)", + "valueIsOneOf('D_589588769_2_2',555374628)", + "valueIsOneOf('D_589588769_2_2',871673221)", + "valueIsOneOf('D_589588769_2_2',198654048)", + "valueIsOneOf('D_807431780_2_2',353358909)", + "equals(D_607773106_2_2,104430631)", + "equals(D_607773106_2_2,353358909)", + "equals(D_607773106_2_2,178420302)", + "3==1", + "3>1", + "equals(isNotDefined(D_406098499_3_3,false),false)", + "doesNotEqual(isNotDefined(D_406098499_3_3,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_3_3,false),false),greaterThan(3,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_3_3,false),false),equals(3,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_3_3,353358909)", + "doesNotEqual(D_890637099_3_3,353358909)", + "equals(D_578895128_3_3,939782495)", + "equals(D_578895128_3_3,135725957)", + "equals(D_578895128_3_3,518416174)", + "equals(D_578895128_3_3,847945207)", + "equals(D_578895128_3_3,283025574)", + "equals(D_578895128_3_3,942970912)", + "equals(D_578895128_3_3,596122041)", + "equals(D_578895128_3_3,489400183)", + "equals(D_578895128_3_3,863246236)", + "equals(D_578895128_3_3,607793249)", + "equals(D_578895128_3_3,532172400)", + "equals(D_578895128_3_3,754745617)", + "equals(D_578895128_3_3,665036297)", + "equals(D_578895128_3_3,200837530)", + "equals(D_578895128_3_3,990319383)", + "equals(D_578895128_3_3,487917585)", + "equals(D_578895128_3_3,603181162)", + "equals(D_578895128_3_3,482225200)", + "equals(D_578895128_3_3,295976386)", + "equals(D_578895128_3_3,764891959)", + "equals(D_578895128_3_3,248374037)", + "equals(D_578895128_3_3,139822395)", + "equals(D_578895128_3_3,723614811)", + "equals(D_578895128_3_3,807835037)", + "exists('D_957429734_3_3')", + "doesNotExist('D_957429734_3_3')", + "equals(D_578895128_3_3,178420302)", + "selectionCount(\"D_578895128_3_3\",true)>0 or valueLength(\"D_957429734_3_3\")>0", + "valueLength('D_406098499_3_3')>0", + "equals(D_579563781_3_3,536341288)", + "equals(D_579563781_3_3,654207589)", + "equals(D_579563781_3_3,178420302)", + "allExist('D_807431780_3_3','D_578895128_3_3')", + "equals(D_807431780_3_3,353358909)", + "equals(D_807431780_3_3,104430631)", + "valueIsOneOf('D_589588769_3_3',555374628)", + "valueIsOneOf('D_589588769_3_3',871673221)", + "valueIsOneOf('D_589588769_3_3',198654048)", + "valueIsOneOf('D_807431780_3_3',353358909)", + "equals(D_607773106_3_3,104430631)", + "equals(D_607773106_3_3,353358909)", + "equals(D_607773106_3_3,178420302)", + "4==1", + "4>1", + "equals(isNotDefined(D_406098499_4_4,false),false)", + "doesNotEqual(isNotDefined(D_406098499_4_4,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_4_4,false),false),greaterThan(4,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_4_4,false),false),equals(4,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_4_4,353358909)", + "doesNotEqual(D_890637099_4_4,353358909)", + "equals(D_578895128_4_4,939782495)", + "equals(D_578895128_4_4,135725957)", + "equals(D_578895128_4_4,518416174)", + "equals(D_578895128_4_4,847945207)", + "equals(D_578895128_4_4,283025574)", + "equals(D_578895128_4_4,942970912)", + "equals(D_578895128_4_4,596122041)", + "equals(D_578895128_4_4,489400183)", + "equals(D_578895128_4_4,863246236)", + "equals(D_578895128_4_4,607793249)", + "equals(D_578895128_4_4,532172400)", + "equals(D_578895128_4_4,754745617)", + "equals(D_578895128_4_4,665036297)", + "equals(D_578895128_4_4,200837530)", + "equals(D_578895128_4_4,990319383)", + "equals(D_578895128_4_4,487917585)", + "equals(D_578895128_4_4,603181162)", + "equals(D_578895128_4_4,482225200)", + "equals(D_578895128_4_4,295976386)", + "equals(D_578895128_4_4,764891959)", + "equals(D_578895128_4_4,248374037)", + "equals(D_578895128_4_4,139822395)", + "equals(D_578895128_4_4,723614811)", + "equals(D_578895128_4_4,807835037)", + "exists('D_957429734_4_4')", + "doesNotExist('D_957429734_4_4')", + "equals(D_578895128_4_4,178420302)", + "selectionCount(\"D_578895128_4_4\",true)>0 or valueLength(\"D_957429734_4_4\")>0", + "valueLength('D_406098499_4_4')>0", + "equals(D_579563781_4_4,536341288)", + "equals(D_579563781_4_4,654207589)", + "equals(D_579563781_4_4,178420302)", + "allExist('D_807431780_4_4','D_578895128_4_4')", + "equals(D_807431780_4_4,353358909)", + "equals(D_807431780_4_4,104430631)", + "valueIsOneOf('D_589588769_4_4',555374628)", + "valueIsOneOf('D_589588769_4_4',871673221)", + "valueIsOneOf('D_589588769_4_4',198654048)", + "valueIsOneOf('D_807431780_4_4',353358909)", + "equals(D_607773106_4_4,104430631)", + "equals(D_607773106_4_4,353358909)", + "equals(D_607773106_4_4,178420302)", + "5==1", + "5>1", + "equals(isNotDefined(D_406098499_5_5,false),false)", + "doesNotEqual(isNotDefined(D_406098499_5_5,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_5_5,false),false),greaterThan(5,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_5_5,false),false),equals(5,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_5_5,353358909)", + "doesNotEqual(D_890637099_5_5,353358909)", + "equals(D_578895128_5_5,939782495)", + "equals(D_578895128_5_5,135725957)", + "equals(D_578895128_5_5,518416174)", + "equals(D_578895128_5_5,847945207)", + "equals(D_578895128_5_5,283025574)", + "equals(D_578895128_5_5,942970912)", + "equals(D_578895128_5_5,596122041)", + "equals(D_578895128_5_5,489400183)", + "equals(D_578895128_5_5,863246236)", + "equals(D_578895128_5_5,607793249)", + "equals(D_578895128_5_5,532172400)", + "equals(D_578895128_5_5,754745617)", + "equals(D_578895128_5_5,665036297)", + "equals(D_578895128_5_5,200837530)", + "equals(D_578895128_5_5,990319383)", + "equals(D_578895128_5_5,487917585)", + "equals(D_578895128_5_5,603181162)", + "equals(D_578895128_5_5,482225200)", + "equals(D_578895128_5_5,295976386)", + "equals(D_578895128_5_5,764891959)", + "equals(D_578895128_5_5,248374037)", + "equals(D_578895128_5_5,139822395)", + "equals(D_578895128_5_5,723614811)", + "equals(D_578895128_5_5,807835037)", + "exists('D_957429734_5_5')", + "doesNotExist('D_957429734_5_5')", + "equals(D_578895128_5_5,178420302)", + "selectionCount(\"D_578895128_5_5\",true)>0 or valueLength(\"D_957429734_5_5\")>0", + "valueLength('D_406098499_5_5')>0", + "equals(D_579563781_5_5,536341288)", + "equals(D_579563781_5_5,654207589)", + "equals(D_579563781_5_5,178420302)", + "allExist('D_807431780_5_5','D_578895128_5_5')", + "equals(D_807431780_5_5,353358909)", + "equals(D_807431780_5_5,104430631)", + "valueIsOneOf('D_589588769_5_5',555374628)", + "valueIsOneOf('D_589588769_5_5',871673221)", + "valueIsOneOf('D_589588769_5_5',198654048)", + "valueIsOneOf('D_807431780_5_5',353358909)", + "equals(D_607773106_5_5,104430631)", + "equals(D_607773106_5_5,353358909)", + "equals(D_607773106_5_5,178420302)", + "6==1", + "6>1", + "equals(isNotDefined(D_406098499_6_6,false),false)", + "doesNotEqual(isNotDefined(D_406098499_6_6,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_6_6,false),false),greaterThan(6,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_6_6,false),false),equals(6,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_6_6,353358909)", + "doesNotEqual(D_890637099_6_6,353358909)", + "equals(D_578895128_6_6,939782495)", + "equals(D_578895128_6_6,135725957)", + "equals(D_578895128_6_6,518416174)", + "equals(D_578895128_6_6,847945207)", + "equals(D_578895128_6_6,283025574)", + "equals(D_578895128_6_6,942970912)", + "equals(D_578895128_6_6,596122041)", + "equals(D_578895128_6_6,489400183)", + "equals(D_578895128_6_6,863246236)", + "equals(D_578895128_6_6,607793249)", + "equals(D_578895128_6_6,532172400)", + "equals(D_578895128_6_6,754745617)", + "equals(D_578895128_6_6,665036297)", + "equals(D_578895128_6_6,200837530)", + "equals(D_578895128_6_6,990319383)", + "equals(D_578895128_6_6,487917585)", + "equals(D_578895128_6_6,603181162)", + "equals(D_578895128_6_6,482225200)", + "equals(D_578895128_6_6,295976386)", + "equals(D_578895128_6_6,764891959)", + "equals(D_578895128_6_6,248374037)", + "equals(D_578895128_6_6,139822395)", + "equals(D_578895128_6_6,723614811)", + "equals(D_578895128_6_6,807835037)", + "exists('D_957429734_6_6')", + "doesNotExist('D_957429734_6_6')", + "equals(D_578895128_6_6,178420302)", + "selectionCount(\"D_578895128_6_6\",true)>0 or valueLength(\"D_957429734_6_6\")>0", + "valueLength('D_406098499_6_6')>0", + "equals(D_579563781_6_6,536341288)", + "equals(D_579563781_6_6,654207589)", + "equals(D_579563781_6_6,178420302)", + "allExist('D_807431780_6_6','D_578895128_6_6')", + "equals(D_807431780_6_6,353358909)", + "equals(D_807431780_6_6,104430631)", + "valueIsOneOf('D_589588769_6_6',555374628)", + "valueIsOneOf('D_589588769_6_6',871673221)", + "valueIsOneOf('D_589588769_6_6',198654048)", + "valueIsOneOf('D_807431780_6_6',353358909)", + "equals(D_607773106_6_6,104430631)", + "equals(D_607773106_6_6,353358909)", + "equals(D_607773106_6_6,178420302)", + "7==1", + "7>1", + "equals(isNotDefined(D_406098499_7_7,false),false)", + "doesNotEqual(isNotDefined(D_406098499_7_7,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_7_7,false),false),greaterThan(7,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_7_7,false),false),equals(7,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_7_7,353358909)", + "doesNotEqual(D_890637099_7_7,353358909)", + "equals(D_578895128_7_7,939782495)", + "equals(D_578895128_7_7,135725957)", + "equals(D_578895128_7_7,518416174)", + "equals(D_578895128_7_7,847945207)", + "equals(D_578895128_7_7,283025574)", + "equals(D_578895128_7_7,942970912)", + "equals(D_578895128_7_7,596122041)", + "equals(D_578895128_7_7,489400183)", + "equals(D_578895128_7_7,863246236)", + "equals(D_578895128_7_7,607793249)", + "equals(D_578895128_7_7,532172400)", + "equals(D_578895128_7_7,754745617)", + "equals(D_578895128_7_7,665036297)", + "equals(D_578895128_7_7,200837530)", + "equals(D_578895128_7_7,990319383)", + "equals(D_578895128_7_7,487917585)", + "equals(D_578895128_7_7,603181162)", + "equals(D_578895128_7_7,482225200)", + "equals(D_578895128_7_7,295976386)", + "equals(D_578895128_7_7,764891959)", + "equals(D_578895128_7_7,248374037)", + "equals(D_578895128_7_7,139822395)", + "equals(D_578895128_7_7,723614811)", + "equals(D_578895128_7_7,807835037)", + "exists('D_957429734_7_7')", + "doesNotExist('D_957429734_7_7')", + "equals(D_578895128_7_7,178420302)", + "selectionCount(\"D_578895128_7_7\",true)>0 or valueLength(\"D_957429734_7_7\")>0", + "valueLength('D_406098499_7_7')>0", + "equals(D_579563781_7_7,536341288)", + "equals(D_579563781_7_7,654207589)", + "equals(D_579563781_7_7,178420302)", + "allExist('D_807431780_7_7','D_578895128_7_7')", + "equals(D_807431780_7_7,353358909)", + "equals(D_807431780_7_7,104430631)", + "valueIsOneOf('D_589588769_7_7',555374628)", + "valueIsOneOf('D_589588769_7_7',871673221)", + "valueIsOneOf('D_589588769_7_7',198654048)", + "valueIsOneOf('D_807431780_7_7',353358909)", + "equals(D_607773106_7_7,104430631)", + "equals(D_607773106_7_7,353358909)", + "equals(D_607773106_7_7,178420302)", + "8==1", + "8>1", + "equals(isNotDefined(D_406098499_8_8,false),false)", + "doesNotEqual(isNotDefined(D_406098499_8_8,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_8_8,false),false),greaterThan(8,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_8_8,false),false),equals(8,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_8_8,353358909)", + "doesNotEqual(D_890637099_8_8,353358909)", + "equals(D_578895128_8_8,939782495)", + "equals(D_578895128_8_8,135725957)", + "equals(D_578895128_8_8,518416174)", + "equals(D_578895128_8_8,847945207)", + "equals(D_578895128_8_8,283025574)", + "equals(D_578895128_8_8,942970912)", + "equals(D_578895128_8_8,596122041)", + "equals(D_578895128_8_8,489400183)", + "equals(D_578895128_8_8,863246236)", + "equals(D_578895128_8_8,607793249)", + "equals(D_578895128_8_8,532172400)", + "equals(D_578895128_8_8,754745617)", + "equals(D_578895128_8_8,665036297)", + "equals(D_578895128_8_8,200837530)", + "equals(D_578895128_8_8,990319383)", + "equals(D_578895128_8_8,487917585)", + "equals(D_578895128_8_8,603181162)", + "equals(D_578895128_8_8,482225200)", + "equals(D_578895128_8_8,295976386)", + "equals(D_578895128_8_8,764891959)", + "equals(D_578895128_8_8,248374037)", + "equals(D_578895128_8_8,139822395)", + "equals(D_578895128_8_8,723614811)", + "equals(D_578895128_8_8,807835037)", + "exists('D_957429734_8_8')", + "doesNotExist('D_957429734_8_8')", + "equals(D_578895128_8_8,178420302)", + "selectionCount(\"D_578895128_8_8\",true)>0 or valueLength(\"D_957429734_8_8\")>0", + "valueLength('D_406098499_8_8')>0", + "equals(D_579563781_8_8,536341288)", + "equals(D_579563781_8_8,654207589)", + "equals(D_579563781_8_8,178420302)", + "allExist('D_807431780_8_8','D_578895128_8_8')", + "equals(D_807431780_8_8,353358909)", + "equals(D_807431780_8_8,104430631)", + "valueIsOneOf('D_589588769_8_8',555374628)", + "valueIsOneOf('D_589588769_8_8',871673221)", + "valueIsOneOf('D_589588769_8_8',198654048)", + "valueIsOneOf('D_807431780_8_8',353358909)", + "equals(D_607773106_8_8,104430631)", + "equals(D_607773106_8_8,353358909)", + "equals(D_607773106_8_8,178420302)", + "9==1", + "9>1", + "equals(isNotDefined(D_406098499_9_9,false),false)", + "doesNotEqual(isNotDefined(D_406098499_9_9,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_9_9,false),false),greaterThan(9,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_9_9,false),false),equals(9,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_9_9,353358909)", + "doesNotEqual(D_890637099_9_9,353358909)", + "equals(D_578895128_9_9,939782495)", + "equals(D_578895128_9_9,135725957)", + "equals(D_578895128_9_9,518416174)", + "equals(D_578895128_9_9,847945207)", + "equals(D_578895128_9_9,283025574)", + "equals(D_578895128_9_9,942970912)", + "equals(D_578895128_9_9,596122041)", + "equals(D_578895128_9_9,489400183)", + "equals(D_578895128_9_9,863246236)", + "equals(D_578895128_9_9,607793249)", + "equals(D_578895128_9_9,532172400)", + "equals(D_578895128_9_9,754745617)", + "equals(D_578895128_9_9,665036297)", + "equals(D_578895128_9_9,200837530)", + "equals(D_578895128_9_9,990319383)", + "equals(D_578895128_9_9,487917585)", + "equals(D_578895128_9_9,603181162)", + "equals(D_578895128_9_9,482225200)", + "equals(D_578895128_9_9,295976386)", + "equals(D_578895128_9_9,764891959)", + "equals(D_578895128_9_9,248374037)", + "equals(D_578895128_9_9,139822395)", + "equals(D_578895128_9_9,723614811)", + "equals(D_578895128_9_9,807835037)", + "exists('D_957429734_9_9')", + "doesNotExist('D_957429734_9_9')", + "equals(D_578895128_9_9,178420302)", + "selectionCount(\"D_578895128_9_9\",true)>0 or valueLength(\"D_957429734_9_9\")>0", + "valueLength('D_406098499_9_9')>0", + "equals(D_579563781_9_9,536341288)", + "equals(D_579563781_9_9,654207589)", + "equals(D_579563781_9_9,178420302)", + "allExist('D_807431780_9_9','D_578895128_9_9')", + "equals(D_807431780_9_9,353358909)", + "equals(D_807431780_9_9,104430631)", + "valueIsOneOf('D_589588769_9_9',555374628)", + "valueIsOneOf('D_589588769_9_9',871673221)", + "valueIsOneOf('D_589588769_9_9',198654048)", + "valueIsOneOf('D_807431780_9_9',353358909)", + "equals(D_607773106_9_9,104430631)", + "equals(D_607773106_9_9,353358909)", + "equals(D_607773106_9_9,178420302)", + "10==1", + "10>1", + "equals(isNotDefined(D_406098499_10_10,false),false)", + "doesNotEqual(isNotDefined(D_406098499_10_10,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_10_10,false),false),greaterThan(10,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_10_10,false),false),equals(10,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_10_10,353358909)", + "doesNotEqual(D_890637099_10_10,353358909)", + "equals(D_578895128_10_10,939782495)", + "equals(D_578895128_10_10,135725957)", + "equals(D_578895128_10_10,518416174)", + "equals(D_578895128_10_10,847945207)", + "equals(D_578895128_10_10,283025574)", + "equals(D_578895128_10_10,942970912)", + "equals(D_578895128_10_10,596122041)", + "equals(D_578895128_10_10,489400183)", + "equals(D_578895128_10_10,863246236)", + "equals(D_578895128_10_10,607793249)", + "equals(D_578895128_10_10,532172400)", + "equals(D_578895128_10_10,754745617)", + "equals(D_578895128_10_10,665036297)", + "equals(D_578895128_10_10,200837530)", + "equals(D_578895128_10_10,990319383)", + "equals(D_578895128_10_10,487917585)", + "equals(D_578895128_10_10,603181162)", + "equals(D_578895128_10_10,482225200)", + "equals(D_578895128_10_10,295976386)", + "equals(D_578895128_10_10,764891959)", + "equals(D_578895128_10_10,248374037)", + "equals(D_578895128_10_10,139822395)", + "equals(D_578895128_10_10,723614811)", + "equals(D_578895128_10_10,807835037)", + "exists('D_957429734_10_10')", + "doesNotExist('D_957429734_10_10')", + "equals(D_578895128_10_10,178420302)", + "selectionCount(\"D_578895128_10_10\",true)>0 or valueLength(\"D_957429734_10_10\")>0", + "valueLength('D_406098499_10_10')>0", + "equals(D_579563781_10_10,536341288)", + "equals(D_579563781_10_10,654207589)", + "equals(D_579563781_10_10,178420302)", + "allExist('D_807431780_10_10','D_578895128_10_10')", + "equals(D_807431780_10_10,353358909)", + "equals(D_807431780_10_10,104430631)", + "valueIsOneOf('D_589588769_10_10',555374628)", + "valueIsOneOf('D_589588769_10_10',871673221)", + "valueIsOneOf('D_589588769_10_10',198654048)", + "valueIsOneOf('D_807431780_10_10',353358909)", + "equals(D_607773106_10_10,104430631)", + "equals(D_607773106_10_10,353358909)", + "equals(D_607773106_10_10,178420302)", + "11==1", + "11>1", + "equals(isNotDefined(D_406098499_11_11,false),false)", + "doesNotEqual(isNotDefined(D_406098499_11_11,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_11_11,false),false),greaterThan(11,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_11_11,false),false),equals(11,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_11_11,353358909)", + "doesNotEqual(D_890637099_11_11,353358909)", + "equals(D_578895128_11_11,939782495)", + "equals(D_578895128_11_11,135725957)", + "equals(D_578895128_11_11,518416174)", + "equals(D_578895128_11_11,847945207)", + "equals(D_578895128_11_11,283025574)", + "equals(D_578895128_11_11,942970912)", + "equals(D_578895128_11_11,596122041)", + "equals(D_578895128_11_11,489400183)", + "equals(D_578895128_11_11,863246236)", + "equals(D_578895128_11_11,607793249)", + "equals(D_578895128_11_11,532172400)", + "equals(D_578895128_11_11,754745617)", + "equals(D_578895128_11_11,665036297)", + "equals(D_578895128_11_11,200837530)", + "equals(D_578895128_11_11,990319383)", + "equals(D_578895128_11_11,487917585)", + "equals(D_578895128_11_11,603181162)", + "equals(D_578895128_11_11,482225200)", + "equals(D_578895128_11_11,295976386)", + "equals(D_578895128_11_11,764891959)", + "equals(D_578895128_11_11,248374037)", + "equals(D_578895128_11_11,139822395)", + "equals(D_578895128_11_11,723614811)", + "equals(D_578895128_11_11,807835037)", + "exists('D_957429734_11_11')", + "doesNotExist('D_957429734_11_11')", + "equals(D_578895128_11_11,178420302)", + "selectionCount(\"D_578895128_11_11\",true)>0 or valueLength(\"D_957429734_11_11\")>0", + "valueLength('D_406098499_11_11')>0", + "equals(D_579563781_11_11,536341288)", + "equals(D_579563781_11_11,654207589)", + "equals(D_579563781_11_11,178420302)", + "allExist('D_807431780_11_11','D_578895128_11_11')", + "equals(D_807431780_11_11,353358909)", + "equals(D_807431780_11_11,104430631)", + "valueIsOneOf('D_589588769_11_11',555374628)", + "valueIsOneOf('D_589588769_11_11',871673221)", + "valueIsOneOf('D_589588769_11_11',198654048)", + "valueIsOneOf('D_807431780_11_11',353358909)", + "equals(D_607773106_11_11,104430631)", + "equals(D_607773106_11_11,353358909)", + "equals(D_607773106_11_11,178420302)", + "12==1", + "12>1", + "equals(isNotDefined(D_406098499_12_12,false),false)", + "doesNotEqual(isNotDefined(D_406098499_12_12,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_12_12,false),false),greaterThan(12,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_12_12,false),false),equals(12,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_12_12,353358909)", + "doesNotEqual(D_890637099_12_12,353358909)", + "equals(D_578895128_12_12,939782495)", + "equals(D_578895128_12_12,135725957)", + "equals(D_578895128_12_12,518416174)", + "equals(D_578895128_12_12,847945207)", + "equals(D_578895128_12_12,283025574)", + "equals(D_578895128_12_12,942970912)", + "equals(D_578895128_12_12,596122041)", + "equals(D_578895128_12_12,489400183)", + "equals(D_578895128_12_12,863246236)", + "equals(D_578895128_12_12,607793249)", + "equals(D_578895128_12_12,532172400)", + "equals(D_578895128_12_12,754745617)", + "equals(D_578895128_12_12,665036297)", + "equals(D_578895128_12_12,200837530)", + "equals(D_578895128_12_12,990319383)", + "equals(D_578895128_12_12,487917585)", + "equals(D_578895128_12_12,603181162)", + "equals(D_578895128_12_12,482225200)", + "equals(D_578895128_12_12,295976386)", + "equals(D_578895128_12_12,764891959)", + "equals(D_578895128_12_12,248374037)", + "equals(D_578895128_12_12,139822395)", + "equals(D_578895128_12_12,723614811)", + "equals(D_578895128_12_12,807835037)", + "exists('D_957429734_12_12')", + "doesNotExist('D_957429734_12_12')", + "equals(D_578895128_12_12,178420302)", + "selectionCount(\"D_578895128_12_12\",true)>0 or valueLength(\"D_957429734_12_12\")>0", + "valueLength('D_406098499_12_12')>0", + "equals(D_579563781_12_12,536341288)", + "equals(D_579563781_12_12,654207589)", + "equals(D_579563781_12_12,178420302)", + "allExist('D_807431780_12_12','D_578895128_12_12')", + "equals(D_807431780_12_12,353358909)", + "equals(D_807431780_12_12,104430631)", + "valueIsOneOf('D_589588769_12_12',555374628)", + "valueIsOneOf('D_589588769_12_12',871673221)", + "valueIsOneOf('D_589588769_12_12',198654048)", + "valueIsOneOf('D_807431780_12_12',353358909)", + "equals(D_607773106_12_12,104430631)", + "equals(D_607773106_12_12,353358909)", + "equals(D_607773106_12_12,178420302)", + "13==1", + "13>1", + "equals(isNotDefined(D_406098499_13_13,false),false)", + "doesNotEqual(isNotDefined(D_406098499_13_13,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_13_13,false),false),greaterThan(13,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_13_13,false),false),equals(13,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_13_13,353358909)", + "doesNotEqual(D_890637099_13_13,353358909)", + "equals(D_578895128_13_13,939782495)", + "equals(D_578895128_13_13,135725957)", + "equals(D_578895128_13_13,518416174)", + "equals(D_578895128_13_13,847945207)", + "equals(D_578895128_13_13,283025574)", + "equals(D_578895128_13_13,942970912)", + "equals(D_578895128_13_13,596122041)", + "equals(D_578895128_13_13,489400183)", + "equals(D_578895128_13_13,863246236)", + "equals(D_578895128_13_13,607793249)", + "equals(D_578895128_13_13,532172400)", + "equals(D_578895128_13_13,754745617)", + "equals(D_578895128_13_13,665036297)", + "equals(D_578895128_13_13,200837530)", + "equals(D_578895128_13_13,990319383)", + "equals(D_578895128_13_13,487917585)", + "equals(D_578895128_13_13,603181162)", + "equals(D_578895128_13_13,482225200)", + "equals(D_578895128_13_13,295976386)", + "equals(D_578895128_13_13,764891959)", + "equals(D_578895128_13_13,248374037)", + "equals(D_578895128_13_13,139822395)", + "equals(D_578895128_13_13,723614811)", + "equals(D_578895128_13_13,807835037)", + "exists('D_957429734_13_13')", + "doesNotExist('D_957429734_13_13')", + "equals(D_578895128_13_13,178420302)", + "selectionCount(\"D_578895128_13_13\",true)>0 or valueLength(\"D_957429734_13_13\")>0", + "valueLength('D_406098499_13_13')>0", + "equals(D_579563781_13_13,536341288)", + "equals(D_579563781_13_13,654207589)", + "equals(D_579563781_13_13,178420302)", + "allExist('D_807431780_13_13','D_578895128_13_13')", + "equals(D_807431780_13_13,353358909)", + "equals(D_807431780_13_13,104430631)", + "valueIsOneOf('D_589588769_13_13',555374628)", + "valueIsOneOf('D_589588769_13_13',871673221)", + "valueIsOneOf('D_589588769_13_13',198654048)", + "valueIsOneOf('D_807431780_13_13',353358909)", + "equals(D_607773106_13_13,104430631)", + "equals(D_607773106_13_13,353358909)", + "equals(D_607773106_13_13,178420302)", + "14==1", + "14>1", + "equals(isNotDefined(D_406098499_14_14,false),false)", + "doesNotEqual(isNotDefined(D_406098499_14_14,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_14_14,false),false),greaterThan(14,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_14_14,false),false),equals(14,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_14_14,353358909)", + "doesNotEqual(D_890637099_14_14,353358909)", + "equals(D_578895128_14_14,939782495)", + "equals(D_578895128_14_14,135725957)", + "equals(D_578895128_14_14,518416174)", + "equals(D_578895128_14_14,847945207)", + "equals(D_578895128_14_14,283025574)", + "equals(D_578895128_14_14,942970912)", + "equals(D_578895128_14_14,596122041)", + "equals(D_578895128_14_14,489400183)", + "equals(D_578895128_14_14,863246236)", + "equals(D_578895128_14_14,607793249)", + "equals(D_578895128_14_14,532172400)", + "equals(D_578895128_14_14,754745617)", + "equals(D_578895128_14_14,665036297)", + "equals(D_578895128_14_14,200837530)", + "equals(D_578895128_14_14,990319383)", + "equals(D_578895128_14_14,487917585)", + "equals(D_578895128_14_14,603181162)", + "equals(D_578895128_14_14,482225200)", + "equals(D_578895128_14_14,295976386)", + "equals(D_578895128_14_14,764891959)", + "equals(D_578895128_14_14,248374037)", + "equals(D_578895128_14_14,139822395)", + "equals(D_578895128_14_14,723614811)", + "equals(D_578895128_14_14,807835037)", + "exists('D_957429734_14_14')", + "doesNotExist('D_957429734_14_14')", + "equals(D_578895128_14_14,178420302)", + "selectionCount(\"D_578895128_14_14\",true)>0 or valueLength(\"D_957429734_14_14\")>0", + "valueLength('D_406098499_14_14')>0", + "equals(D_579563781_14_14,536341288)", + "equals(D_579563781_14_14,654207589)", + "equals(D_579563781_14_14,178420302)", + "allExist('D_807431780_14_14','D_578895128_14_14')", + "equals(D_807431780_14_14,353358909)", + "equals(D_807431780_14_14,104430631)", + "valueIsOneOf('D_589588769_14_14',555374628)", + "valueIsOneOf('D_589588769_14_14',871673221)", + "valueIsOneOf('D_589588769_14_14',198654048)", + "valueIsOneOf('D_807431780_14_14',353358909)", + "equals(D_607773106_14_14,104430631)", + "equals(D_607773106_14_14,353358909)", + "equals(D_607773106_14_14,178420302)", + "15==1", + "15>1", + "equals(isNotDefined(D_406098499_15_15,false),false)", + "doesNotEqual(isNotDefined(D_406098499_15_15,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_15_15,false),false),greaterThan(15,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_15_15,false),false),equals(15,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_15_15,353358909)", + "doesNotEqual(D_890637099_15_15,353358909)", + "equals(D_578895128_15_15,939782495)", + "equals(D_578895128_15_15,135725957)", + "equals(D_578895128_15_15,518416174)", + "equals(D_578895128_15_15,847945207)", + "equals(D_578895128_15_15,283025574)", + "equals(D_578895128_15_15,942970912)", + "equals(D_578895128_15_15,596122041)", + "equals(D_578895128_15_15,489400183)", + "equals(D_578895128_15_15,863246236)", + "equals(D_578895128_15_15,607793249)", + "equals(D_578895128_15_15,532172400)", + "equals(D_578895128_15_15,754745617)", + "equals(D_578895128_15_15,665036297)", + "equals(D_578895128_15_15,200837530)", + "equals(D_578895128_15_15,990319383)", + "equals(D_578895128_15_15,487917585)", + "equals(D_578895128_15_15,603181162)", + "equals(D_578895128_15_15,482225200)", + "equals(D_578895128_15_15,295976386)", + "equals(D_578895128_15_15,764891959)", + "equals(D_578895128_15_15,248374037)", + "equals(D_578895128_15_15,139822395)", + "equals(D_578895128_15_15,723614811)", + "equals(D_578895128_15_15,807835037)", + "exists('D_957429734_15_15')", + "doesNotExist('D_957429734_15_15')", + "equals(D_578895128_15_15,178420302)", + "selectionCount(\"D_578895128_15_15\",true)>0 or valueLength(\"D_957429734_15_15\")>0", + "valueLength('D_406098499_15_15')>0", + "equals(D_579563781_15_15,536341288)", + "equals(D_579563781_15_15,654207589)", + "equals(D_579563781_15_15,178420302)", + "allExist('D_807431780_15_15','D_578895128_15_15')", + "equals(D_807431780_15_15,353358909)", + "equals(D_807431780_15_15,104430631)", + "valueIsOneOf('D_589588769_15_15',555374628)", + "valueIsOneOf('D_589588769_15_15',871673221)", + "valueIsOneOf('D_589588769_15_15',198654048)", + "valueIsOneOf('D_807431780_15_15',353358909)", + "equals(D_607773106_15_15,104430631)", + "equals(D_607773106_15_15,353358909)", + "equals(D_607773106_15_15,178420302)", + "16==1", + "16>1", + "equals(isNotDefined(D_406098499_16_16,false),false)", + "doesNotEqual(isNotDefined(D_406098499_16_16,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_16_16,false),false),greaterThan(16,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_16_16,false),false),equals(16,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_16_16,353358909)", + "doesNotEqual(D_890637099_16_16,353358909)", + "equals(D_578895128_16_16,939782495)", + "equals(D_578895128_16_16,135725957)", + "equals(D_578895128_16_16,518416174)", + "equals(D_578895128_16_16,847945207)", + "equals(D_578895128_16_16,283025574)", + "equals(D_578895128_16_16,942970912)", + "equals(D_578895128_16_16,596122041)", + "equals(D_578895128_16_16,489400183)", + "equals(D_578895128_16_16,863246236)", + "equals(D_578895128_16_16,607793249)", + "equals(D_578895128_16_16,532172400)", + "equals(D_578895128_16_16,754745617)", + "equals(D_578895128_16_16,665036297)", + "equals(D_578895128_16_16,200837530)", + "equals(D_578895128_16_16,990319383)", + "equals(D_578895128_16_16,487917585)", + "equals(D_578895128_16_16,603181162)", + "equals(D_578895128_16_16,482225200)", + "equals(D_578895128_16_16,295976386)", + "equals(D_578895128_16_16,764891959)", + "equals(D_578895128_16_16,248374037)", + "equals(D_578895128_16_16,139822395)", + "equals(D_578895128_16_16,723614811)", + "equals(D_578895128_16_16,807835037)", + "exists('D_957429734_16_16')", + "doesNotExist('D_957429734_16_16')", + "equals(D_578895128_16_16,178420302)", + "selectionCount(\"D_578895128_16_16\",true)>0 or valueLength(\"D_957429734_16_16\")>0", + "valueLength('D_406098499_16_16')>0", + "equals(D_579563781_16_16,536341288)", + "equals(D_579563781_16_16,654207589)", + "equals(D_579563781_16_16,178420302)", + "allExist('D_807431780_16_16','D_578895128_16_16')", + "equals(D_807431780_16_16,353358909)", + "equals(D_807431780_16_16,104430631)", + "valueIsOneOf('D_589588769_16_16',555374628)", + "valueIsOneOf('D_589588769_16_16',871673221)", + "valueIsOneOf('D_589588769_16_16',198654048)", + "valueIsOneOf('D_807431780_16_16',353358909)", + "equals(D_607773106_16_16,104430631)", + "equals(D_607773106_16_16,353358909)", + "equals(D_607773106_16_16,178420302)", + "17==1", + "17>1", + "equals(isNotDefined(D_406098499_17_17,false),false)", + "doesNotEqual(isNotDefined(D_406098499_17_17,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_17_17,false),false),greaterThan(17,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_17_17,false),false),equals(17,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_17_17,353358909)", + "doesNotEqual(D_890637099_17_17,353358909)", + "equals(D_578895128_17_17,939782495)", + "equals(D_578895128_17_17,135725957)", + "equals(D_578895128_17_17,518416174)", + "equals(D_578895128_17_17,847945207)", + "equals(D_578895128_17_17,283025574)", + "equals(D_578895128_17_17,942970912)", + "equals(D_578895128_17_17,596122041)", + "equals(D_578895128_17_17,489400183)", + "equals(D_578895128_17_17,863246236)", + "equals(D_578895128_17_17,607793249)", + "equals(D_578895128_17_17,532172400)", + "equals(D_578895128_17_17,754745617)", + "equals(D_578895128_17_17,665036297)", + "equals(D_578895128_17_17,200837530)", + "equals(D_578895128_17_17,990319383)", + "equals(D_578895128_17_17,487917585)", + "equals(D_578895128_17_17,603181162)", + "equals(D_578895128_17_17,482225200)", + "equals(D_578895128_17_17,295976386)", + "equals(D_578895128_17_17,764891959)", + "equals(D_578895128_17_17,248374037)", + "equals(D_578895128_17_17,139822395)", + "equals(D_578895128_17_17,723614811)", + "equals(D_578895128_17_17,807835037)", + "exists('D_957429734_17_17')", + "doesNotExist('D_957429734_17_17')", + "equals(D_578895128_17_17,178420302)", + "selectionCount(\"D_578895128_17_17\",true)>0 or valueLength(\"D_957429734_17_17\")>0", + "valueLength('D_406098499_17_17')>0", + "equals(D_579563781_17_17,536341288)", + "equals(D_579563781_17_17,654207589)", + "equals(D_579563781_17_17,178420302)", + "allExist('D_807431780_17_17','D_578895128_17_17')", + "equals(D_807431780_17_17,353358909)", + "equals(D_807431780_17_17,104430631)", + "valueIsOneOf('D_589588769_17_17',555374628)", + "valueIsOneOf('D_589588769_17_17',871673221)", + "valueIsOneOf('D_589588769_17_17',198654048)", + "valueIsOneOf('D_807431780_17_17',353358909)", + "equals(D_607773106_17_17,104430631)", + "equals(D_607773106_17_17,353358909)", + "equals(D_607773106_17_17,178420302)", + "18==1", + "18>1", + "equals(isNotDefined(D_406098499_18_18,false),false)", + "doesNotEqual(isNotDefined(D_406098499_18_18,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_18_18,false),false),greaterThan(18,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_18_18,false),false),equals(18,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_18_18,353358909)", + "doesNotEqual(D_890637099_18_18,353358909)", + "equals(D_578895128_18_18,939782495)", + "equals(D_578895128_18_18,135725957)", + "equals(D_578895128_18_18,518416174)", + "equals(D_578895128_18_18,847945207)", + "equals(D_578895128_18_18,283025574)", + "equals(D_578895128_18_18,942970912)", + "equals(D_578895128_18_18,596122041)", + "equals(D_578895128_18_18,489400183)", + "equals(D_578895128_18_18,863246236)", + "equals(D_578895128_18_18,607793249)", + "equals(D_578895128_18_18,532172400)", + "equals(D_578895128_18_18,754745617)", + "equals(D_578895128_18_18,665036297)", + "equals(D_578895128_18_18,200837530)", + "equals(D_578895128_18_18,990319383)", + "equals(D_578895128_18_18,487917585)", + "equals(D_578895128_18_18,603181162)", + "equals(D_578895128_18_18,482225200)", + "equals(D_578895128_18_18,295976386)", + "equals(D_578895128_18_18,764891959)", + "equals(D_578895128_18_18,248374037)", + "equals(D_578895128_18_18,139822395)", + "equals(D_578895128_18_18,723614811)", + "equals(D_578895128_18_18,807835037)", + "exists('D_957429734_18_18')", + "doesNotExist('D_957429734_18_18')", + "equals(D_578895128_18_18,178420302)", + "selectionCount(\"D_578895128_18_18\",true)>0 or valueLength(\"D_957429734_18_18\")>0", + "valueLength('D_406098499_18_18')>0", + "equals(D_579563781_18_18,536341288)", + "equals(D_579563781_18_18,654207589)", + "equals(D_579563781_18_18,178420302)", + "allExist('D_807431780_18_18','D_578895128_18_18')", + "equals(D_807431780_18_18,353358909)", + "equals(D_807431780_18_18,104430631)", + "valueIsOneOf('D_589588769_18_18',555374628)", + "valueIsOneOf('D_589588769_18_18',871673221)", + "valueIsOneOf('D_589588769_18_18',198654048)", + "valueIsOneOf('D_807431780_18_18',353358909)", + "equals(D_607773106_18_18,104430631)", + "equals(D_607773106_18_18,353358909)", + "equals(D_607773106_18_18,178420302)", + "19==1", + "19>1", + "equals(isNotDefined(D_406098499_19_19,false),false)", + "doesNotEqual(isNotDefined(D_406098499_19_19,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_19_19,false),false),greaterThan(19,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_19_19,false),false),equals(19,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_19_19,353358909)", + "doesNotEqual(D_890637099_19_19,353358909)", + "equals(D_578895128_19_19,939782495)", + "equals(D_578895128_19_19,135725957)", + "equals(D_578895128_19_19,518416174)", + "equals(D_578895128_19_19,847945207)", + "equals(D_578895128_19_19,283025574)", + "equals(D_578895128_19_19,942970912)", + "equals(D_578895128_19_19,596122041)", + "equals(D_578895128_19_19,489400183)", + "equals(D_578895128_19_19,863246236)", + "equals(D_578895128_19_19,607793249)", + "equals(D_578895128_19_19,532172400)", + "equals(D_578895128_19_19,754745617)", + "equals(D_578895128_19_19,665036297)", + "equals(D_578895128_19_19,200837530)", + "equals(D_578895128_19_19,990319383)", + "equals(D_578895128_19_19,487917585)", + "equals(D_578895128_19_19,603181162)", + "equals(D_578895128_19_19,482225200)", + "equals(D_578895128_19_19,295976386)", + "equals(D_578895128_19_19,764891959)", + "equals(D_578895128_19_19,248374037)", + "equals(D_578895128_19_19,139822395)", + "equals(D_578895128_19_19,723614811)", + "equals(D_578895128_19_19,807835037)", + "exists('D_957429734_19_19')", + "doesNotExist('D_957429734_19_19')", + "equals(D_578895128_19_19,178420302)", + "selectionCount(\"D_578895128_19_19\",true)>0 or valueLength(\"D_957429734_19_19\")>0", + "valueLength('D_406098499_19_19')>0", + "equals(D_579563781_19_19,536341288)", + "equals(D_579563781_19_19,654207589)", + "equals(D_579563781_19_19,178420302)", + "allExist('D_807431780_19_19','D_578895128_19_19')", + "equals(D_807431780_19_19,353358909)", + "equals(D_807431780_19_19,104430631)", + "valueIsOneOf('D_589588769_19_19',555374628)", + "valueIsOneOf('D_589588769_19_19',871673221)", + "valueIsOneOf('D_589588769_19_19',198654048)", + "valueIsOneOf('D_807431780_19_19',353358909)", + "equals(D_607773106_19_19,104430631)", + "equals(D_607773106_19_19,353358909)", + "equals(D_607773106_19_19,178420302)", + "20==1", + "20>1", + "equals(isNotDefined(D_406098499_20_20,false),false)", + "doesNotEqual(isNotDefined(D_406098499_20_20,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_20_20,false),false),greaterThan(20,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_20_20,false),false),equals(20,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_20_20,353358909)", + "doesNotEqual(D_890637099_20_20,353358909)", + "equals(D_578895128_20_20,939782495)", + "equals(D_578895128_20_20,135725957)", + "equals(D_578895128_20_20,518416174)", + "equals(D_578895128_20_20,847945207)", + "equals(D_578895128_20_20,283025574)", + "equals(D_578895128_20_20,942970912)", + "equals(D_578895128_20_20,596122041)", + "equals(D_578895128_20_20,489400183)", + "equals(D_578895128_20_20,863246236)", + "equals(D_578895128_20_20,607793249)", + "equals(D_578895128_20_20,532172400)", + "equals(D_578895128_20_20,754745617)", + "equals(D_578895128_20_20,665036297)", + "equals(D_578895128_20_20,200837530)", + "equals(D_578895128_20_20,990319383)", + "equals(D_578895128_20_20,487917585)", + "equals(D_578895128_20_20,603181162)", + "equals(D_578895128_20_20,482225200)", + "equals(D_578895128_20_20,295976386)", + "equals(D_578895128_20_20,764891959)", + "equals(D_578895128_20_20,248374037)", + "equals(D_578895128_20_20,139822395)", + "equals(D_578895128_20_20,723614811)", + "equals(D_578895128_20_20,807835037)", + "exists('D_957429734_20_20')", + "doesNotExist('D_957429734_20_20')", + "equals(D_578895128_20_20,178420302)", + "selectionCount(\"D_578895128_20_20\",true)>0 or valueLength(\"D_957429734_20_20\")>0", + "valueLength('D_406098499_20_20')>0", + "equals(D_579563781_20_20,536341288)", + "equals(D_579563781_20_20,654207589)", + "equals(D_579563781_20_20,178420302)", + "allExist('D_807431780_20_20','D_578895128_20_20')", + "equals(D_807431780_20_20,353358909)", + "equals(D_807431780_20_20,104430631)", + "valueIsOneOf('D_589588769_20_20',555374628)", + "valueIsOneOf('D_589588769_20_20',871673221)", + "valueIsOneOf('D_589588769_20_20',198654048)", + "valueIsOneOf('D_807431780_20_20',353358909)", + "equals(D_607773106_20_20,104430631)", + "equals(D_607773106_20_20,353358909)", + "equals(D_607773106_20_20,178420302)", + "21==1", + "21>1", + "equals(isNotDefined(D_406098499_21_21,false),false)", + "doesNotEqual(isNotDefined(D_406098499_21_21,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_21_21,false),false),greaterThan(21,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_21_21,false),false),equals(21,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_21_21,353358909)", + "doesNotEqual(D_890637099_21_21,353358909)", + "equals(D_578895128_21_21,939782495)", + "equals(D_578895128_21_21,135725957)", + "equals(D_578895128_21_21,518416174)", + "equals(D_578895128_21_21,847945207)", + "equals(D_578895128_21_21,283025574)", + "equals(D_578895128_21_21,942970912)", + "equals(D_578895128_21_21,596122041)", + "equals(D_578895128_21_21,489400183)", + "equals(D_578895128_21_21,863246236)", + "equals(D_578895128_21_21,607793249)", + "equals(D_578895128_21_21,532172400)", + "equals(D_578895128_21_21,754745617)", + "equals(D_578895128_21_21,665036297)", + "equals(D_578895128_21_21,200837530)", + "equals(D_578895128_21_21,990319383)", + "equals(D_578895128_21_21,487917585)", + "equals(D_578895128_21_21,603181162)", + "equals(D_578895128_21_21,482225200)", + "equals(D_578895128_21_21,295976386)", + "equals(D_578895128_21_21,764891959)", + "equals(D_578895128_21_21,248374037)", + "equals(D_578895128_21_21,139822395)", + "equals(D_578895128_21_21,723614811)", + "equals(D_578895128_21_21,807835037)", + "exists('D_957429734_21_21')", + "doesNotExist('D_957429734_21_21')", + "equals(D_578895128_21_21,178420302)", + "selectionCount(\"D_578895128_21_21\",true)>0 or valueLength(\"D_957429734_21_21\")>0", + "valueLength('D_406098499_21_21')>0", + "equals(D_579563781_21_21,536341288)", + "equals(D_579563781_21_21,654207589)", + "equals(D_579563781_21_21,178420302)", + "allExist('D_807431780_21_21','D_578895128_21_21')", + "equals(D_807431780_21_21,353358909)", + "equals(D_807431780_21_21,104430631)", + "valueIsOneOf('D_589588769_21_21',555374628)", + "valueIsOneOf('D_589588769_21_21',871673221)", + "valueIsOneOf('D_589588769_21_21',198654048)", + "valueIsOneOf('D_807431780_21_21',353358909)", + "equals(D_607773106_21_21,104430631)", + "equals(D_607773106_21_21,353358909)", + "equals(D_607773106_21_21,178420302)", + "22==1", + "22>1", + "equals(isNotDefined(D_406098499_22_22,false),false)", + "doesNotEqual(isNotDefined(D_406098499_22_22,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_22_22,false),false),greaterThan(22,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_22_22,false),false),equals(22,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_22_22,353358909)", + "doesNotEqual(D_890637099_22_22,353358909)", + "equals(D_578895128_22_22,939782495)", + "equals(D_578895128_22_22,135725957)", + "equals(D_578895128_22_22,518416174)", + "equals(D_578895128_22_22,847945207)", + "equals(D_578895128_22_22,283025574)", + "equals(D_578895128_22_22,942970912)", + "equals(D_578895128_22_22,596122041)", + "equals(D_578895128_22_22,489400183)", + "equals(D_578895128_22_22,863246236)", + "equals(D_578895128_22_22,607793249)", + "equals(D_578895128_22_22,532172400)", + "equals(D_578895128_22_22,754745617)", + "equals(D_578895128_22_22,665036297)", + "equals(D_578895128_22_22,200837530)", + "equals(D_578895128_22_22,990319383)", + "equals(D_578895128_22_22,487917585)", + "equals(D_578895128_22_22,603181162)", + "equals(D_578895128_22_22,482225200)", + "equals(D_578895128_22_22,295976386)", + "equals(D_578895128_22_22,764891959)", + "equals(D_578895128_22_22,248374037)", + "equals(D_578895128_22_22,139822395)", + "equals(D_578895128_22_22,723614811)", + "equals(D_578895128_22_22,807835037)", + "exists('D_957429734_22_22')", + "doesNotExist('D_957429734_22_22')", + "equals(D_578895128_22_22,178420302)", + "selectionCount(\"D_578895128_22_22\",true)>0 or valueLength(\"D_957429734_22_22\")>0", + "valueLength('D_406098499_22_22')>0", + "equals(D_579563781_22_22,536341288)", + "equals(D_579563781_22_22,654207589)", + "equals(D_579563781_22_22,178420302)", + "allExist('D_807431780_22_22','D_578895128_22_22')", + "equals(D_807431780_22_22,353358909)", + "equals(D_807431780_22_22,104430631)", + "valueIsOneOf('D_589588769_22_22',555374628)", + "valueIsOneOf('D_589588769_22_22',871673221)", + "valueIsOneOf('D_589588769_22_22',198654048)", + "valueIsOneOf('D_807431780_22_22',353358909)", + "equals(D_607773106_22_22,104430631)", + "equals(D_607773106_22_22,353358909)", + "equals(D_607773106_22_22,178420302)", + "23==1", + "23>1", + "equals(isNotDefined(D_406098499_23_23,false),false)", + "doesNotEqual(isNotDefined(D_406098499_23_23,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_23_23,false),false),greaterThan(23,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_23_23,false),false),equals(23,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_23_23,353358909)", + "doesNotEqual(D_890637099_23_23,353358909)", + "equals(D_578895128_23_23,939782495)", + "equals(D_578895128_23_23,135725957)", + "equals(D_578895128_23_23,518416174)", + "equals(D_578895128_23_23,847945207)", + "equals(D_578895128_23_23,283025574)", + "equals(D_578895128_23_23,942970912)", + "equals(D_578895128_23_23,596122041)", + "equals(D_578895128_23_23,489400183)", + "equals(D_578895128_23_23,863246236)", + "equals(D_578895128_23_23,607793249)", + "equals(D_578895128_23_23,532172400)", + "equals(D_578895128_23_23,754745617)", + "equals(D_578895128_23_23,665036297)", + "equals(D_578895128_23_23,200837530)", + "equals(D_578895128_23_23,990319383)", + "equals(D_578895128_23_23,487917585)", + "equals(D_578895128_23_23,603181162)", + "equals(D_578895128_23_23,482225200)", + "equals(D_578895128_23_23,295976386)", + "equals(D_578895128_23_23,764891959)", + "equals(D_578895128_23_23,248374037)", + "equals(D_578895128_23_23,139822395)", + "equals(D_578895128_23_23,723614811)", + "equals(D_578895128_23_23,807835037)", + "exists('D_957429734_23_23')", + "doesNotExist('D_957429734_23_23')", + "equals(D_578895128_23_23,178420302)", + "selectionCount(\"D_578895128_23_23\",true)>0 or valueLength(\"D_957429734_23_23\")>0", + "valueLength('D_406098499_23_23')>0", + "equals(D_579563781_23_23,536341288)", + "equals(D_579563781_23_23,654207589)", + "equals(D_579563781_23_23,178420302)", + "allExist('D_807431780_23_23','D_578895128_23_23')", + "equals(D_807431780_23_23,353358909)", + "equals(D_807431780_23_23,104430631)", + "valueIsOneOf('D_589588769_23_23',555374628)", + "valueIsOneOf('D_589588769_23_23',871673221)", + "valueIsOneOf('D_589588769_23_23',198654048)", + "valueIsOneOf('D_807431780_23_23',353358909)", + "equals(D_607773106_23_23,104430631)", + "equals(D_607773106_23_23,353358909)", + "equals(D_607773106_23_23,178420302)", + "24==1", + "24>1", + "equals(isNotDefined(D_406098499_24_24,false),false)", + "doesNotEqual(isNotDefined(D_406098499_24_24,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_24_24,false),false),greaterThan(24,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_24_24,false),false),equals(24,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_24_24,353358909)", + "doesNotEqual(D_890637099_24_24,353358909)", + "equals(D_578895128_24_24,939782495)", + "equals(D_578895128_24_24,135725957)", + "equals(D_578895128_24_24,518416174)", + "equals(D_578895128_24_24,847945207)", + "equals(D_578895128_24_24,283025574)", + "equals(D_578895128_24_24,942970912)", + "equals(D_578895128_24_24,596122041)", + "equals(D_578895128_24_24,489400183)", + "equals(D_578895128_24_24,863246236)", + "equals(D_578895128_24_24,607793249)", + "equals(D_578895128_24_24,532172400)", + "equals(D_578895128_24_24,754745617)", + "equals(D_578895128_24_24,665036297)", + "equals(D_578895128_24_24,200837530)", + "equals(D_578895128_24_24,990319383)", + "equals(D_578895128_24_24,487917585)", + "equals(D_578895128_24_24,603181162)", + "equals(D_578895128_24_24,482225200)", + "equals(D_578895128_24_24,295976386)", + "equals(D_578895128_24_24,764891959)", + "equals(D_578895128_24_24,248374037)", + "equals(D_578895128_24_24,139822395)", + "equals(D_578895128_24_24,723614811)", + "equals(D_578895128_24_24,807835037)", + "exists('D_957429734_24_24')", + "doesNotExist('D_957429734_24_24')", + "equals(D_578895128_24_24,178420302)", + "selectionCount(\"D_578895128_24_24\",true)>0 or valueLength(\"D_957429734_24_24\")>0", + "valueLength('D_406098499_24_24')>0", + "equals(D_579563781_24_24,536341288)", + "equals(D_579563781_24_24,654207589)", + "equals(D_579563781_24_24,178420302)", + "allExist('D_807431780_24_24','D_578895128_24_24')", + "equals(D_807431780_24_24,353358909)", + "equals(D_807431780_24_24,104430631)", + "valueIsOneOf('D_589588769_24_24',555374628)", + "valueIsOneOf('D_589588769_24_24',871673221)", + "valueIsOneOf('D_589588769_24_24',198654048)", + "valueIsOneOf('D_807431780_24_24',353358909)", + "equals(D_607773106_24_24,104430631)", + "equals(D_607773106_24_24,353358909)", + "equals(D_607773106_24_24,178420302)", + "25==1", + "25>1", + "equals(isNotDefined(D_406098499_25_25,false),false)", + "doesNotEqual(isNotDefined(D_406098499_25_25,false),false)", + "and(doesNotEqual(isNotDefined(D_406098499_25_25,false),false),greaterThan(25,1))", + "and(and(doesNotEqual(isNotDefined(D_406098499_25_25,false),false),equals(25,1)),doesNotEqual(D_694265648,1))", + "equals(D_890637099_25_25,353358909)", + "doesNotEqual(D_890637099_25_25,353358909)", + "equals(D_578895128_25_25,939782495)", + "equals(D_578895128_25_25,135725957)", + "equals(D_578895128_25_25,518416174)", + "equals(D_578895128_25_25,847945207)", + "equals(D_578895128_25_25,283025574)", + "equals(D_578895128_25_25,942970912)", + "equals(D_578895128_25_25,596122041)", + "equals(D_578895128_25_25,489400183)", + "equals(D_578895128_25_25,863246236)", + "equals(D_578895128_25_25,607793249)", + "equals(D_578895128_25_25,532172400)", + "equals(D_578895128_25_25,754745617)", + "equals(D_578895128_25_25,665036297)", + "equals(D_578895128_25_25,200837530)", + "equals(D_578895128_25_25,990319383)", + "equals(D_578895128_25_25,487917585)", + "equals(D_578895128_25_25,603181162)", + "equals(D_578895128_25_25,482225200)", + "equals(D_578895128_25_25,295976386)", + "equals(D_578895128_25_25,764891959)", + "equals(D_578895128_25_25,248374037)", + "equals(D_578895128_25_25,139822395)", + "equals(D_578895128_25_25,723614811)", + "equals(D_578895128_25_25,807835037)", + "exists('D_957429734_25_25')", + "doesNotExist('D_957429734_25_25')", + "equals(D_578895128_25_25,178420302)", + "selectionCount(\"D_578895128_25_25\",true)>0 or valueLength(\"D_957429734_25_25\")>0", + "valueLength('D_406098499_25_25')>0", + "equals(D_579563781_25_25,536341288)", + "equals(D_579563781_25_25,654207589)", + "equals(D_579563781_25_25,178420302)", + "allExist('D_807431780_25_25','D_578895128_25_25')", + "equals(D_807431780_25_25,353358909)", + "equals(D_807431780_25_25,104430631)", + "valueIsOneOf('D_589588769_25_25',555374628)", + "valueIsOneOf('D_589588769_25_25',871673221)", + "valueIsOneOf('D_589588769_25_25',198654048)", + "valueIsOneOf('D_807431780_25_25',353358909)", + "equals(D_607773106_25_25,104430631)", + "equals(D_607773106_25_25,353358909)", + "equals(D_607773106_25_25,178420302)", + "isNotDefined(D_446999144,0)", + "or(equals(D_446999144,0),or(isNotDefined(D_446999144,0),greaterThanOrEqual(D_446999144,2)))", + "equals(isNotDefined(D_714001034_1_1,false),false)", + "doesNotEqual(isNotDefined(D_714001034_1_1,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_1_1,false),false),greaterThan(1,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_1_1,false),false),equals(1,1)),doesNotEqual(D_446999144,1))", + "greaterThan(D_446999144,1)", + "equals(D_418392907_1_1,353358909)", + "doesNotEqual(D_418392907_1_1,353358909)", + "equals(D_812370563_1_1,939782495)", + "equals(D_812370563_1_1,135725957)", + "equals(D_812370563_1_1,518416174)", + "equals(D_812370563_1_1,847945207)", + "equals(D_812370563_1_1,283025574)", + "equals(D_812370563_1_1,942970912)", + "equals(D_812370563_1_1,596122041)", + "equals(D_812370563_1_1,489400183)", + "equals(D_812370563_1_1,863246236)", + "equals(D_812370563_1_1,607793249)", + "equals(D_812370563_1_1,532172400)", + "equals(D_812370563_1_1,754745617)", + "equals(D_812370563_1_1,665036297)", + "equals(D_812370563_1_1,200837530)", + "equals(D_812370563_1_1,990319383)", + "equals(D_812370563_1_1,487917585)", + "equals(D_812370563_1_1,603181162)", + "equals(D_812370563_1_1,482225200)", + "equals(D_812370563_1_1,295976386)", + "equals(D_812370563_1_1,764891959)", + "equals(D_812370563_1_1,248374037)", + "equals(D_812370563_1_1,139822395)", + "equals(D_812370563_1_1,723614811)", + "equals(D_812370563_1_1,807835037)", + "valueLength('D_933110091_1_1')>0", + "doesNotExist('D_933110091_1_1')", + "equals(D_812370563_1_1,178420302)", + "selectionCount(\"D_812370563_1_1\",true)>0 or valueLength(\"D_933110091_1_1\")>0", + "valueLength('D_714001034_1_1')>0", + "equals(D_887697329_1_1,536341288)", + "equals(D_887697329_1_1,654207589)", + "equals(D_887697329_1_1,178420302)", + "allExist('D_473529484_1_1','D_812370563_1_1')", + "equals(D_473529484_1_1,353358909)", + "equals(D_473529484_1_1,104430631)", + "equals(D_873968217_1_1,709650750)", + "equals(D_873968217_1_1,810290359)", + "equals(D_873968217_1_1,509607548)", + "equals(D_873968217_1_1,784922042)", + "equals(D_718867914_1_1,104430631)", + "equals(D_718867914_1_1,353358909)", + "equals(D_718867914_1_1,178420302)", + "equals(isNotDefined(D_714001034_2_2,false),false)", + "doesNotEqual(isNotDefined(D_714001034_2_2,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_2_2,false),false),greaterThan(2,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_2_2,false),false),equals(2,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_2_2,353358909)", + "doesNotEqual(D_418392907_2_2,353358909)", + "equals(D_812370563_2_2,939782495)", + "equals(D_812370563_2_2,135725957)", + "equals(D_812370563_2_2,518416174)", + "equals(D_812370563_2_2,847945207)", + "equals(D_812370563_2_2,283025574)", + "equals(D_812370563_2_2,942970912)", + "equals(D_812370563_2_2,596122041)", + "equals(D_812370563_2_2,489400183)", + "equals(D_812370563_2_2,863246236)", + "equals(D_812370563_2_2,607793249)", + "equals(D_812370563_2_2,532172400)", + "equals(D_812370563_2_2,754745617)", + "equals(D_812370563_2_2,665036297)", + "equals(D_812370563_2_2,200837530)", + "equals(D_812370563_2_2,990319383)", + "equals(D_812370563_2_2,487917585)", + "equals(D_812370563_2_2,603181162)", + "equals(D_812370563_2_2,482225200)", + "equals(D_812370563_2_2,295976386)", + "equals(D_812370563_2_2,764891959)", + "equals(D_812370563_2_2,248374037)", + "equals(D_812370563_2_2,139822395)", + "equals(D_812370563_2_2,723614811)", + "equals(D_812370563_2_2,807835037)", + "valueLength('D_933110091_2_2')>0", + "doesNotExist('D_933110091_2_2')", + "equals(D_812370563_2_2,178420302)", + "selectionCount(\"D_812370563_2_2\",true)>0 or valueLength(\"D_933110091_2_2\")>0", + "valueLength('D_714001034_2_2')>0", + "equals(D_887697329_2_2,536341288)", + "equals(D_887697329_2_2,654207589)", + "equals(D_887697329_2_2,178420302)", + "allExist('D_473529484_2_2','D_812370563_2_2')", + "equals(D_473529484_2_2,353358909)", + "equals(D_473529484_2_2,104430631)", + "equals(D_873968217_2_2,709650750)", + "equals(D_873968217_2_2,810290359)", + "equals(D_873968217_2_2,509607548)", + "equals(D_873968217_2_2,784922042)", + "equals(D_718867914_2_2,104430631)", + "equals(D_718867914_2_2,353358909)", + "equals(D_718867914_2_2,178420302)", + "equals(isNotDefined(D_714001034_3_3,false),false)", + "doesNotEqual(isNotDefined(D_714001034_3_3,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_3_3,false),false),greaterThan(3,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_3_3,false),false),equals(3,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_3_3,353358909)", + "doesNotEqual(D_418392907_3_3,353358909)", + "equals(D_812370563_3_3,939782495)", + "equals(D_812370563_3_3,135725957)", + "equals(D_812370563_3_3,518416174)", + "equals(D_812370563_3_3,847945207)", + "equals(D_812370563_3_3,283025574)", + "equals(D_812370563_3_3,942970912)", + "equals(D_812370563_3_3,596122041)", + "equals(D_812370563_3_3,489400183)", + "equals(D_812370563_3_3,863246236)", + "equals(D_812370563_3_3,607793249)", + "equals(D_812370563_3_3,532172400)", + "equals(D_812370563_3_3,754745617)", + "equals(D_812370563_3_3,665036297)", + "equals(D_812370563_3_3,200837530)", + "equals(D_812370563_3_3,990319383)", + "equals(D_812370563_3_3,487917585)", + "equals(D_812370563_3_3,603181162)", + "equals(D_812370563_3_3,482225200)", + "equals(D_812370563_3_3,295976386)", + "equals(D_812370563_3_3,764891959)", + "equals(D_812370563_3_3,248374037)", + "equals(D_812370563_3_3,139822395)", + "equals(D_812370563_3_3,723614811)", + "equals(D_812370563_3_3,807835037)", + "valueLength('D_933110091_3_3')>0", + "doesNotExist('D_933110091_3_3')", + "equals(D_812370563_3_3,178420302)", + "selectionCount(\"D_812370563_3_3\",true)>0 or valueLength(\"D_933110091_3_3\")>0", + "valueLength('D_714001034_3_3')>0", + "equals(D_887697329_3_3,536341288)", + "equals(D_887697329_3_3,654207589)", + "equals(D_887697329_3_3,178420302)", + "allExist('D_473529484_3_3','D_812370563_3_3')", + "equals(D_473529484_3_3,353358909)", + "equals(D_473529484_3_3,104430631)", + "equals(D_873968217_3_3,709650750)", + "equals(D_873968217_3_3,810290359)", + "equals(D_873968217_3_3,509607548)", + "equals(D_873968217_3_3,784922042)", + "equals(D_718867914_3_3,104430631)", + "equals(D_718867914_3_3,353358909)", + "equals(D_718867914_3_3,178420302)", + "equals(isNotDefined(D_714001034_4_4,false),false)", + "doesNotEqual(isNotDefined(D_714001034_4_4,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_4_4,false),false),greaterThan(4,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_4_4,false),false),equals(4,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_4_4,353358909)", + "doesNotEqual(D_418392907_4_4,353358909)", + "equals(D_812370563_4_4,939782495)", + "equals(D_812370563_4_4,135725957)", + "equals(D_812370563_4_4,518416174)", + "equals(D_812370563_4_4,847945207)", + "equals(D_812370563_4_4,283025574)", + "equals(D_812370563_4_4,942970912)", + "equals(D_812370563_4_4,596122041)", + "equals(D_812370563_4_4,489400183)", + "equals(D_812370563_4_4,863246236)", + "equals(D_812370563_4_4,607793249)", + "equals(D_812370563_4_4,532172400)", + "equals(D_812370563_4_4,754745617)", + "equals(D_812370563_4_4,665036297)", + "equals(D_812370563_4_4,200837530)", + "equals(D_812370563_4_4,990319383)", + "equals(D_812370563_4_4,487917585)", + "equals(D_812370563_4_4,603181162)", + "equals(D_812370563_4_4,482225200)", + "equals(D_812370563_4_4,295976386)", + "equals(D_812370563_4_4,764891959)", + "equals(D_812370563_4_4,248374037)", + "equals(D_812370563_4_4,139822395)", + "equals(D_812370563_4_4,723614811)", + "equals(D_812370563_4_4,807835037)", + "valueLength('D_933110091_4_4')>0", + "doesNotExist('D_933110091_4_4')", + "equals(D_812370563_4_4,178420302)", + "selectionCount(\"D_812370563_4_4\",true)>0 or valueLength(\"D_933110091_4_4\")>0", + "valueLength('D_714001034_4_4')>0", + "equals(D_887697329_4_4,536341288)", + "equals(D_887697329_4_4,654207589)", + "equals(D_887697329_4_4,178420302)", + "allExist('D_473529484_4_4','D_812370563_4_4')", + "equals(D_473529484_4_4,353358909)", + "equals(D_473529484_4_4,104430631)", + "equals(D_873968217_4_4,709650750)", + "equals(D_873968217_4_4,810290359)", + "equals(D_873968217_4_4,509607548)", + "equals(D_873968217_4_4,784922042)", + "equals(D_718867914_4_4,104430631)", + "equals(D_718867914_4_4,353358909)", + "equals(D_718867914_4_4,178420302)", + "equals(isNotDefined(D_714001034_5_5,false),false)", + "doesNotEqual(isNotDefined(D_714001034_5_5,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_5_5,false),false),greaterThan(5,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_5_5,false),false),equals(5,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_5_5,353358909)", + "doesNotEqual(D_418392907_5_5,353358909)", + "equals(D_812370563_5_5,939782495)", + "equals(D_812370563_5_5,135725957)", + "equals(D_812370563_5_5,518416174)", + "equals(D_812370563_5_5,847945207)", + "equals(D_812370563_5_5,283025574)", + "equals(D_812370563_5_5,942970912)", + "equals(D_812370563_5_5,596122041)", + "equals(D_812370563_5_5,489400183)", + "equals(D_812370563_5_5,863246236)", + "equals(D_812370563_5_5,607793249)", + "equals(D_812370563_5_5,532172400)", + "equals(D_812370563_5_5,754745617)", + "equals(D_812370563_5_5,665036297)", + "equals(D_812370563_5_5,200837530)", + "equals(D_812370563_5_5,990319383)", + "equals(D_812370563_5_5,487917585)", + "equals(D_812370563_5_5,603181162)", + "equals(D_812370563_5_5,482225200)", + "equals(D_812370563_5_5,295976386)", + "equals(D_812370563_5_5,764891959)", + "equals(D_812370563_5_5,248374037)", + "equals(D_812370563_5_5,139822395)", + "equals(D_812370563_5_5,723614811)", + "equals(D_812370563_5_5,807835037)", + "valueLength('D_933110091_5_5')>0", + "doesNotExist('D_933110091_5_5')", + "equals(D_812370563_5_5,178420302)", + "selectionCount(\"D_812370563_5_5\",true)>0 or valueLength(\"D_933110091_5_5\")>0", + "valueLength('D_714001034_5_5')>0", + "equals(D_887697329_5_5,536341288)", + "equals(D_887697329_5_5,654207589)", + "equals(D_887697329_5_5,178420302)", + "allExist('D_473529484_5_5','D_812370563_5_5')", + "equals(D_473529484_5_5,353358909)", + "equals(D_473529484_5_5,104430631)", + "equals(D_873968217_5_5,709650750)", + "equals(D_873968217_5_5,810290359)", + "equals(D_873968217_5_5,509607548)", + "equals(D_873968217_5_5,784922042)", + "equals(D_718867914_5_5,104430631)", + "equals(D_718867914_5_5,353358909)", + "equals(D_718867914_5_5,178420302)", + "equals(isNotDefined(D_714001034_6_6,false),false)", + "doesNotEqual(isNotDefined(D_714001034_6_6,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_6_6,false),false),greaterThan(6,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_6_6,false),false),equals(6,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_6_6,353358909)", + "doesNotEqual(D_418392907_6_6,353358909)", + "equals(D_812370563_6_6,939782495)", + "equals(D_812370563_6_6,135725957)", + "equals(D_812370563_6_6,518416174)", + "equals(D_812370563_6_6,847945207)", + "equals(D_812370563_6_6,283025574)", + "equals(D_812370563_6_6,942970912)", + "equals(D_812370563_6_6,596122041)", + "equals(D_812370563_6_6,489400183)", + "equals(D_812370563_6_6,863246236)", + "equals(D_812370563_6_6,607793249)", + "equals(D_812370563_6_6,532172400)", + "equals(D_812370563_6_6,754745617)", + "equals(D_812370563_6_6,665036297)", + "equals(D_812370563_6_6,200837530)", + "equals(D_812370563_6_6,990319383)", + "equals(D_812370563_6_6,487917585)", + "equals(D_812370563_6_6,603181162)", + "equals(D_812370563_6_6,482225200)", + "equals(D_812370563_6_6,295976386)", + "equals(D_812370563_6_6,764891959)", + "equals(D_812370563_6_6,248374037)", + "equals(D_812370563_6_6,139822395)", + "equals(D_812370563_6_6,723614811)", + "equals(D_812370563_6_6,807835037)", + "valueLength('D_933110091_6_6')>0", + "doesNotExist('D_933110091_6_6')", + "equals(D_812370563_6_6,178420302)", + "selectionCount(\"D_812370563_6_6\",true)>0 or valueLength(\"D_933110091_6_6\")>0", + "valueLength('D_714001034_6_6')>0", + "equals(D_887697329_6_6,536341288)", + "equals(D_887697329_6_6,654207589)", + "equals(D_887697329_6_6,178420302)", + "allExist('D_473529484_6_6','D_812370563_6_6')", + "equals(D_473529484_6_6,353358909)", + "equals(D_473529484_6_6,104430631)", + "equals(D_873968217_6_6,709650750)", + "equals(D_873968217_6_6,810290359)", + "equals(D_873968217_6_6,509607548)", + "equals(D_873968217_6_6,784922042)", + "equals(D_718867914_6_6,104430631)", + "equals(D_718867914_6_6,353358909)", + "equals(D_718867914_6_6,178420302)", + "equals(isNotDefined(D_714001034_7_7,false),false)", + "doesNotEqual(isNotDefined(D_714001034_7_7,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_7_7,false),false),greaterThan(7,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_7_7,false),false),equals(7,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_7_7,353358909)", + "doesNotEqual(D_418392907_7_7,353358909)", + "equals(D_812370563_7_7,939782495)", + "equals(D_812370563_7_7,135725957)", + "equals(D_812370563_7_7,518416174)", + "equals(D_812370563_7_7,847945207)", + "equals(D_812370563_7_7,283025574)", + "equals(D_812370563_7_7,942970912)", + "equals(D_812370563_7_7,596122041)", + "equals(D_812370563_7_7,489400183)", + "equals(D_812370563_7_7,863246236)", + "equals(D_812370563_7_7,607793249)", + "equals(D_812370563_7_7,532172400)", + "equals(D_812370563_7_7,754745617)", + "equals(D_812370563_7_7,665036297)", + "equals(D_812370563_7_7,200837530)", + "equals(D_812370563_7_7,990319383)", + "equals(D_812370563_7_7,487917585)", + "equals(D_812370563_7_7,603181162)", + "equals(D_812370563_7_7,482225200)", + "equals(D_812370563_7_7,295976386)", + "equals(D_812370563_7_7,764891959)", + "equals(D_812370563_7_7,248374037)", + "equals(D_812370563_7_7,139822395)", + "equals(D_812370563_7_7,723614811)", + "equals(D_812370563_7_7,807835037)", + "valueLength('D_933110091_7_7')>0", + "doesNotExist('D_933110091_7_7')", + "equals(D_812370563_7_7,178420302)", + "selectionCount(\"D_812370563_7_7\",true)>0 or valueLength(\"D_933110091_7_7\")>0", + "valueLength('D_714001034_7_7')>0", + "equals(D_887697329_7_7,536341288)", + "equals(D_887697329_7_7,654207589)", + "equals(D_887697329_7_7,178420302)", + "allExist('D_473529484_7_7','D_812370563_7_7')", + "equals(D_473529484_7_7,353358909)", + "equals(D_473529484_7_7,104430631)", + "equals(D_873968217_7_7,709650750)", + "equals(D_873968217_7_7,810290359)", + "equals(D_873968217_7_7,509607548)", + "equals(D_873968217_7_7,784922042)", + "equals(D_718867914_7_7,104430631)", + "equals(D_718867914_7_7,353358909)", + "equals(D_718867914_7_7,178420302)", + "equals(isNotDefined(D_714001034_8_8,false),false)", + "doesNotEqual(isNotDefined(D_714001034_8_8,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_8_8,false),false),greaterThan(8,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_8_8,false),false),equals(8,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_8_8,353358909)", + "doesNotEqual(D_418392907_8_8,353358909)", + "equals(D_812370563_8_8,939782495)", + "equals(D_812370563_8_8,135725957)", + "equals(D_812370563_8_8,518416174)", + "equals(D_812370563_8_8,847945207)", + "equals(D_812370563_8_8,283025574)", + "equals(D_812370563_8_8,942970912)", + "equals(D_812370563_8_8,596122041)", + "equals(D_812370563_8_8,489400183)", + "equals(D_812370563_8_8,863246236)", + "equals(D_812370563_8_8,607793249)", + "equals(D_812370563_8_8,532172400)", + "equals(D_812370563_8_8,754745617)", + "equals(D_812370563_8_8,665036297)", + "equals(D_812370563_8_8,200837530)", + "equals(D_812370563_8_8,990319383)", + "equals(D_812370563_8_8,487917585)", + "equals(D_812370563_8_8,603181162)", + "equals(D_812370563_8_8,482225200)", + "equals(D_812370563_8_8,295976386)", + "equals(D_812370563_8_8,764891959)", + "equals(D_812370563_8_8,248374037)", + "equals(D_812370563_8_8,139822395)", + "equals(D_812370563_8_8,723614811)", + "equals(D_812370563_8_8,807835037)", + "valueLength('D_933110091_8_8')>0", + "doesNotExist('D_933110091_8_8')", + "equals(D_812370563_8_8,178420302)", + "selectionCount(\"D_812370563_8_8\",true)>0 or valueLength(\"D_933110091_8_8\")>0", + "valueLength('D_714001034_8_8')>0", + "equals(D_887697329_8_8,536341288)", + "equals(D_887697329_8_8,654207589)", + "equals(D_887697329_8_8,178420302)", + "allExist('D_473529484_8_8','D_812370563_8_8')", + "equals(D_473529484_8_8,353358909)", + "equals(D_473529484_8_8,104430631)", + "equals(D_873968217_8_8,709650750)", + "equals(D_873968217_8_8,810290359)", + "equals(D_873968217_8_8,509607548)", + "equals(D_873968217_8_8,784922042)", + "equals(D_718867914_8_8,104430631)", + "equals(D_718867914_8_8,353358909)", + "equals(D_718867914_8_8,178420302)", + "equals(isNotDefined(D_714001034_9_9,false),false)", + "doesNotEqual(isNotDefined(D_714001034_9_9,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_9_9,false),false),greaterThan(9,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_9_9,false),false),equals(9,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_9_9,353358909)", + "doesNotEqual(D_418392907_9_9,353358909)", + "equals(D_812370563_9_9,939782495)", + "equals(D_812370563_9_9,135725957)", + "equals(D_812370563_9_9,518416174)", + "equals(D_812370563_9_9,847945207)", + "equals(D_812370563_9_9,283025574)", + "equals(D_812370563_9_9,942970912)", + "equals(D_812370563_9_9,596122041)", + "equals(D_812370563_9_9,489400183)", + "equals(D_812370563_9_9,863246236)", + "equals(D_812370563_9_9,607793249)", + "equals(D_812370563_9_9,532172400)", + "equals(D_812370563_9_9,754745617)", + "equals(D_812370563_9_9,665036297)", + "equals(D_812370563_9_9,200837530)", + "equals(D_812370563_9_9,990319383)", + "equals(D_812370563_9_9,487917585)", + "equals(D_812370563_9_9,603181162)", + "equals(D_812370563_9_9,482225200)", + "equals(D_812370563_9_9,295976386)", + "equals(D_812370563_9_9,764891959)", + "equals(D_812370563_9_9,248374037)", + "equals(D_812370563_9_9,139822395)", + "equals(D_812370563_9_9,723614811)", + "equals(D_812370563_9_9,807835037)", + "valueLength('D_933110091_9_9')>0", + "doesNotExist('D_933110091_9_9')", + "equals(D_812370563_9_9,178420302)", + "selectionCount(\"D_812370563_9_9\",true)>0 or valueLength(\"D_933110091_9_9\")>0", + "valueLength('D_714001034_9_9')>0", + "equals(D_887697329_9_9,536341288)", + "equals(D_887697329_9_9,654207589)", + "equals(D_887697329_9_9,178420302)", + "allExist('D_473529484_9_9','D_812370563_9_9')", + "equals(D_473529484_9_9,353358909)", + "equals(D_473529484_9_9,104430631)", + "equals(D_873968217_9_9,709650750)", + "equals(D_873968217_9_9,810290359)", + "equals(D_873968217_9_9,509607548)", + "equals(D_873968217_9_9,784922042)", + "equals(D_718867914_9_9,104430631)", + "equals(D_718867914_9_9,353358909)", + "equals(D_718867914_9_9,178420302)", + "equals(isNotDefined(D_714001034_10_10,false),false)", + "doesNotEqual(isNotDefined(D_714001034_10_10,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_10_10,false),false),greaterThan(10,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_10_10,false),false),equals(10,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_10_10,353358909)", + "doesNotEqual(D_418392907_10_10,353358909)", + "equals(D_812370563_10_10,939782495)", + "equals(D_812370563_10_10,135725957)", + "equals(D_812370563_10_10,518416174)", + "equals(D_812370563_10_10,847945207)", + "equals(D_812370563_10_10,283025574)", + "equals(D_812370563_10_10,942970912)", + "equals(D_812370563_10_10,596122041)", + "equals(D_812370563_10_10,489400183)", + "equals(D_812370563_10_10,863246236)", + "equals(D_812370563_10_10,607793249)", + "equals(D_812370563_10_10,532172400)", + "equals(D_812370563_10_10,754745617)", + "equals(D_812370563_10_10,665036297)", + "equals(D_812370563_10_10,200837530)", + "equals(D_812370563_10_10,990319383)", + "equals(D_812370563_10_10,487917585)", + "equals(D_812370563_10_10,603181162)", + "equals(D_812370563_10_10,482225200)", + "equals(D_812370563_10_10,295976386)", + "equals(D_812370563_10_10,764891959)", + "equals(D_812370563_10_10,248374037)", + "equals(D_812370563_10_10,139822395)", + "equals(D_812370563_10_10,723614811)", + "equals(D_812370563_10_10,807835037)", + "valueLength('D_933110091_10_10')>0", + "doesNotExist('D_933110091_10_10')", + "equals(D_812370563_10_10,178420302)", + "selectionCount(\"D_812370563_10_10\",true)>0 or valueLength(\"D_933110091_10_10\")>0", + "valueLength('D_714001034_10_10')>0", + "equals(D_887697329_10_10,536341288)", + "equals(D_887697329_10_10,654207589)", + "equals(D_887697329_10_10,178420302)", + "allExist('D_473529484_10_10','D_812370563_10_10')", + "equals(D_473529484_10_10,353358909)", + "equals(D_473529484_10_10,104430631)", + "equals(D_873968217_10_10,709650750)", + "equals(D_873968217_10_10,810290359)", + "equals(D_873968217_10_10,509607548)", + "equals(D_873968217_10_10,784922042)", + "equals(D_718867914_10_10,104430631)", + "equals(D_718867914_10_10,353358909)", + "equals(D_718867914_10_10,178420302)", + "equals(isNotDefined(D_714001034_11_11,false),false)", + "doesNotEqual(isNotDefined(D_714001034_11_11,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_11_11,false),false),greaterThan(11,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_11_11,false),false),equals(11,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_11_11,353358909)", + "doesNotEqual(D_418392907_11_11,353358909)", + "equals(D_812370563_11_11,939782495)", + "equals(D_812370563_11_11,135725957)", + "equals(D_812370563_11_11,518416174)", + "equals(D_812370563_11_11,847945207)", + "equals(D_812370563_11_11,283025574)", + "equals(D_812370563_11_11,942970912)", + "equals(D_812370563_11_11,596122041)", + "equals(D_812370563_11_11,489400183)", + "equals(D_812370563_11_11,863246236)", + "equals(D_812370563_11_11,607793249)", + "equals(D_812370563_11_11,532172400)", + "equals(D_812370563_11_11,754745617)", + "equals(D_812370563_11_11,665036297)", + "equals(D_812370563_11_11,200837530)", + "equals(D_812370563_11_11,990319383)", + "equals(D_812370563_11_11,487917585)", + "equals(D_812370563_11_11,603181162)", + "equals(D_812370563_11_11,482225200)", + "equals(D_812370563_11_11,295976386)", + "equals(D_812370563_11_11,764891959)", + "equals(D_812370563_11_11,248374037)", + "equals(D_812370563_11_11,139822395)", + "equals(D_812370563_11_11,723614811)", + "equals(D_812370563_11_11,807835037)", + "valueLength('D_933110091_11_11')>0", + "doesNotExist('D_933110091_11_11')", + "equals(D_812370563_11_11,178420302)", + "selectionCount(\"D_812370563_11_11\",true)>0 or valueLength(\"D_933110091_11_11\")>0", + "valueLength('D_714001034_11_11')>0", + "equals(D_887697329_11_11,536341288)", + "equals(D_887697329_11_11,654207589)", + "equals(D_887697329_11_11,178420302)", + "allExist('D_473529484_11_11','D_812370563_11_11')", + "equals(D_473529484_11_11,353358909)", + "equals(D_473529484_11_11,104430631)", + "equals(D_873968217_11_11,709650750)", + "equals(D_873968217_11_11,810290359)", + "equals(D_873968217_11_11,509607548)", + "equals(D_873968217_11_11,784922042)", + "equals(D_718867914_11_11,104430631)", + "equals(D_718867914_11_11,353358909)", + "equals(D_718867914_11_11,178420302)", + "equals(isNotDefined(D_714001034_12_12,false),false)", + "doesNotEqual(isNotDefined(D_714001034_12_12,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_12_12,false),false),greaterThan(12,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_12_12,false),false),equals(12,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_12_12,353358909)", + "doesNotEqual(D_418392907_12_12,353358909)", + "equals(D_812370563_12_12,939782495)", + "equals(D_812370563_12_12,135725957)", + "equals(D_812370563_12_12,518416174)", + "equals(D_812370563_12_12,847945207)", + "equals(D_812370563_12_12,283025574)", + "equals(D_812370563_12_12,942970912)", + "equals(D_812370563_12_12,596122041)", + "equals(D_812370563_12_12,489400183)", + "equals(D_812370563_12_12,863246236)", + "equals(D_812370563_12_12,607793249)", + "equals(D_812370563_12_12,532172400)", + "equals(D_812370563_12_12,754745617)", + "equals(D_812370563_12_12,665036297)", + "equals(D_812370563_12_12,200837530)", + "equals(D_812370563_12_12,990319383)", + "equals(D_812370563_12_12,487917585)", + "equals(D_812370563_12_12,603181162)", + "equals(D_812370563_12_12,482225200)", + "equals(D_812370563_12_12,295976386)", + "equals(D_812370563_12_12,764891959)", + "equals(D_812370563_12_12,248374037)", + "equals(D_812370563_12_12,139822395)", + "equals(D_812370563_12_12,723614811)", + "equals(D_812370563_12_12,807835037)", + "valueLength('D_933110091_12_12')>0", + "doesNotExist('D_933110091_12_12')", + "equals(D_812370563_12_12,178420302)", + "selectionCount(\"D_812370563_12_12\",true)>0 or valueLength(\"D_933110091_12_12\")>0", + "valueLength('D_714001034_12_12')>0", + "equals(D_887697329_12_12,536341288)", + "equals(D_887697329_12_12,654207589)", + "equals(D_887697329_12_12,178420302)", + "allExist('D_473529484_12_12','D_812370563_12_12')", + "equals(D_473529484_12_12,353358909)", + "equals(D_473529484_12_12,104430631)", + "equals(D_873968217_12_12,709650750)", + "equals(D_873968217_12_12,810290359)", + "equals(D_873968217_12_12,509607548)", + "equals(D_873968217_12_12,784922042)", + "equals(D_718867914_12_12,104430631)", + "equals(D_718867914_12_12,353358909)", + "equals(D_718867914_12_12,178420302)", + "equals(isNotDefined(D_714001034_13_13,false),false)", + "doesNotEqual(isNotDefined(D_714001034_13_13,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_13_13,false),false),greaterThan(13,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_13_13,false),false),equals(13,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_13_13,353358909)", + "doesNotEqual(D_418392907_13_13,353358909)", + "equals(D_812370563_13_13,939782495)", + "equals(D_812370563_13_13,135725957)", + "equals(D_812370563_13_13,518416174)", + "equals(D_812370563_13_13,847945207)", + "equals(D_812370563_13_13,283025574)", + "equals(D_812370563_13_13,942970912)", + "equals(D_812370563_13_13,596122041)", + "equals(D_812370563_13_13,489400183)", + "equals(D_812370563_13_13,863246236)", + "equals(D_812370563_13_13,607793249)", + "equals(D_812370563_13_13,532172400)", + "equals(D_812370563_13_13,754745617)", + "equals(D_812370563_13_13,665036297)", + "equals(D_812370563_13_13,200837530)", + "equals(D_812370563_13_13,990319383)", + "equals(D_812370563_13_13,487917585)", + "equals(D_812370563_13_13,603181162)", + "equals(D_812370563_13_13,482225200)", + "equals(D_812370563_13_13,295976386)", + "equals(D_812370563_13_13,764891959)", + "equals(D_812370563_13_13,248374037)", + "equals(D_812370563_13_13,139822395)", + "equals(D_812370563_13_13,723614811)", + "equals(D_812370563_13_13,807835037)", + "valueLength('D_933110091_13_13')>0", + "doesNotExist('D_933110091_13_13')", + "equals(D_812370563_13_13,178420302)", + "selectionCount(\"D_812370563_13_13\",true)>0 or valueLength(\"D_933110091_13_13\")>0", + "valueLength('D_714001034_13_13')>0", + "equals(D_887697329_13_13,536341288)", + "equals(D_887697329_13_13,654207589)", + "equals(D_887697329_13_13,178420302)", + "allExist('D_473529484_13_13','D_812370563_13_13')", + "equals(D_473529484_13_13,353358909)", + "equals(D_473529484_13_13,104430631)", + "equals(D_873968217_13_13,709650750)", + "equals(D_873968217_13_13,810290359)", + "equals(D_873968217_13_13,509607548)", + "equals(D_873968217_13_13,784922042)", + "equals(D_718867914_13_13,104430631)", + "equals(D_718867914_13_13,353358909)", + "equals(D_718867914_13_13,178420302)", + "equals(isNotDefined(D_714001034_14_14,false),false)", + "doesNotEqual(isNotDefined(D_714001034_14_14,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_14_14,false),false),greaterThan(14,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_14_14,false),false),equals(14,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_14_14,353358909)", + "doesNotEqual(D_418392907_14_14,353358909)", + "equals(D_812370563_14_14,939782495)", + "equals(D_812370563_14_14,135725957)", + "equals(D_812370563_14_14,518416174)", + "equals(D_812370563_14_14,847945207)", + "equals(D_812370563_14_14,283025574)", + "equals(D_812370563_14_14,942970912)", + "equals(D_812370563_14_14,596122041)", + "equals(D_812370563_14_14,489400183)", + "equals(D_812370563_14_14,863246236)", + "equals(D_812370563_14_14,607793249)", + "equals(D_812370563_14_14,532172400)", + "equals(D_812370563_14_14,754745617)", + "equals(D_812370563_14_14,665036297)", + "equals(D_812370563_14_14,200837530)", + "equals(D_812370563_14_14,990319383)", + "equals(D_812370563_14_14,487917585)", + "equals(D_812370563_14_14,603181162)", + "equals(D_812370563_14_14,482225200)", + "equals(D_812370563_14_14,295976386)", + "equals(D_812370563_14_14,764891959)", + "equals(D_812370563_14_14,248374037)", + "equals(D_812370563_14_14,139822395)", + "equals(D_812370563_14_14,723614811)", + "equals(D_812370563_14_14,807835037)", + "valueLength('D_933110091_14_14')>0", + "doesNotExist('D_933110091_14_14')", + "equals(D_812370563_14_14,178420302)", + "selectionCount(\"D_812370563_14_14\",true)>0 or valueLength(\"D_933110091_14_14\")>0", + "valueLength('D_714001034_14_14')>0", + "equals(D_887697329_14_14,536341288)", + "equals(D_887697329_14_14,654207589)", + "equals(D_887697329_14_14,178420302)", + "allExist('D_473529484_14_14','D_812370563_14_14')", + "equals(D_473529484_14_14,353358909)", + "equals(D_473529484_14_14,104430631)", + "equals(D_873968217_14_14,709650750)", + "equals(D_873968217_14_14,810290359)", + "equals(D_873968217_14_14,509607548)", + "equals(D_873968217_14_14,784922042)", + "equals(D_718867914_14_14,104430631)", + "equals(D_718867914_14_14,353358909)", + "equals(D_718867914_14_14,178420302)", + "equals(isNotDefined(D_714001034_15_15,false),false)", + "doesNotEqual(isNotDefined(D_714001034_15_15,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_15_15,false),false),greaterThan(15,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_15_15,false),false),equals(15,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_15_15,353358909)", + "doesNotEqual(D_418392907_15_15,353358909)", + "equals(D_812370563_15_15,939782495)", + "equals(D_812370563_15_15,135725957)", + "equals(D_812370563_15_15,518416174)", + "equals(D_812370563_15_15,847945207)", + "equals(D_812370563_15_15,283025574)", + "equals(D_812370563_15_15,942970912)", + "equals(D_812370563_15_15,596122041)", + "equals(D_812370563_15_15,489400183)", + "equals(D_812370563_15_15,863246236)", + "equals(D_812370563_15_15,607793249)", + "equals(D_812370563_15_15,532172400)", + "equals(D_812370563_15_15,754745617)", + "equals(D_812370563_15_15,665036297)", + "equals(D_812370563_15_15,200837530)", + "equals(D_812370563_15_15,990319383)", + "equals(D_812370563_15_15,487917585)", + "equals(D_812370563_15_15,603181162)", + "equals(D_812370563_15_15,482225200)", + "equals(D_812370563_15_15,295976386)", + "equals(D_812370563_15_15,764891959)", + "equals(D_812370563_15_15,248374037)", + "equals(D_812370563_15_15,139822395)", + "equals(D_812370563_15_15,723614811)", + "equals(D_812370563_15_15,807835037)", + "valueLength('D_933110091_15_15')>0", + "doesNotExist('D_933110091_15_15')", + "equals(D_812370563_15_15,178420302)", + "selectionCount(\"D_812370563_15_15\",true)>0 or valueLength(\"D_933110091_15_15\")>0", + "valueLength('D_714001034_15_15')>0", + "equals(D_887697329_15_15,536341288)", + "equals(D_887697329_15_15,654207589)", + "equals(D_887697329_15_15,178420302)", + "allExist('D_473529484_15_15','D_812370563_15_15')", + "equals(D_473529484_15_15,353358909)", + "equals(D_473529484_15_15,104430631)", + "equals(D_873968217_15_15,709650750)", + "equals(D_873968217_15_15,810290359)", + "equals(D_873968217_15_15,509607548)", + "equals(D_873968217_15_15,784922042)", + "equals(D_718867914_15_15,104430631)", + "equals(D_718867914_15_15,353358909)", + "equals(D_718867914_15_15,178420302)", + "equals(isNotDefined(D_714001034_16_16,false),false)", + "doesNotEqual(isNotDefined(D_714001034_16_16,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_16_16,false),false),greaterThan(16,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_16_16,false),false),equals(16,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_16_16,353358909)", + "doesNotEqual(D_418392907_16_16,353358909)", + "equals(D_812370563_16_16,939782495)", + "equals(D_812370563_16_16,135725957)", + "equals(D_812370563_16_16,518416174)", + "equals(D_812370563_16_16,847945207)", + "equals(D_812370563_16_16,283025574)", + "equals(D_812370563_16_16,942970912)", + "equals(D_812370563_16_16,596122041)", + "equals(D_812370563_16_16,489400183)", + "equals(D_812370563_16_16,863246236)", + "equals(D_812370563_16_16,607793249)", + "equals(D_812370563_16_16,532172400)", + "equals(D_812370563_16_16,754745617)", + "equals(D_812370563_16_16,665036297)", + "equals(D_812370563_16_16,200837530)", + "equals(D_812370563_16_16,990319383)", + "equals(D_812370563_16_16,487917585)", + "equals(D_812370563_16_16,603181162)", + "equals(D_812370563_16_16,482225200)", + "equals(D_812370563_16_16,295976386)", + "equals(D_812370563_16_16,764891959)", + "equals(D_812370563_16_16,248374037)", + "equals(D_812370563_16_16,139822395)", + "equals(D_812370563_16_16,723614811)", + "equals(D_812370563_16_16,807835037)", + "valueLength('D_933110091_16_16')>0", + "doesNotExist('D_933110091_16_16')", + "equals(D_812370563_16_16,178420302)", + "selectionCount(\"D_812370563_16_16\",true)>0 or valueLength(\"D_933110091_16_16\")>0", + "valueLength('D_714001034_16_16')>0", + "equals(D_887697329_16_16,536341288)", + "equals(D_887697329_16_16,654207589)", + "equals(D_887697329_16_16,178420302)", + "allExist('D_473529484_16_16','D_812370563_16_16')", + "equals(D_473529484_16_16,353358909)", + "equals(D_473529484_16_16,104430631)", + "equals(D_873968217_16_16,709650750)", + "equals(D_873968217_16_16,810290359)", + "equals(D_873968217_16_16,509607548)", + "equals(D_873968217_16_16,784922042)", + "equals(D_718867914_16_16,104430631)", + "equals(D_718867914_16_16,353358909)", + "equals(D_718867914_16_16,178420302)", + "equals(isNotDefined(D_714001034_17_17,false),false)", + "doesNotEqual(isNotDefined(D_714001034_17_17,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_17_17,false),false),greaterThan(17,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_17_17,false),false),equals(17,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_17_17,353358909)", + "doesNotEqual(D_418392907_17_17,353358909)", + "equals(D_812370563_17_17,939782495)", + "equals(D_812370563_17_17,135725957)", + "equals(D_812370563_17_17,518416174)", + "equals(D_812370563_17_17,847945207)", + "equals(D_812370563_17_17,283025574)", + "equals(D_812370563_17_17,942970912)", + "equals(D_812370563_17_17,596122041)", + "equals(D_812370563_17_17,489400183)", + "equals(D_812370563_17_17,863246236)", + "equals(D_812370563_17_17,607793249)", + "equals(D_812370563_17_17,532172400)", + "equals(D_812370563_17_17,754745617)", + "equals(D_812370563_17_17,665036297)", + "equals(D_812370563_17_17,200837530)", + "equals(D_812370563_17_17,990319383)", + "equals(D_812370563_17_17,487917585)", + "equals(D_812370563_17_17,603181162)", + "equals(D_812370563_17_17,482225200)", + "equals(D_812370563_17_17,295976386)", + "equals(D_812370563_17_17,764891959)", + "equals(D_812370563_17_17,248374037)", + "equals(D_812370563_17_17,139822395)", + "equals(D_812370563_17_17,723614811)", + "equals(D_812370563_17_17,807835037)", + "valueLength('D_933110091_17_17')>0", + "doesNotExist('D_933110091_17_17')", + "equals(D_812370563_17_17,178420302)", + "selectionCount(\"D_812370563_17_17\",true)>0 or valueLength(\"D_933110091_17_17\")>0", + "valueLength('D_714001034_17_17')>0", + "equals(D_887697329_17_17,536341288)", + "equals(D_887697329_17_17,654207589)", + "equals(D_887697329_17_17,178420302)", + "allExist('D_473529484_17_17','D_812370563_17_17')", + "equals(D_473529484_17_17,353358909)", + "equals(D_473529484_17_17,104430631)", + "equals(D_873968217_17_17,709650750)", + "equals(D_873968217_17_17,810290359)", + "equals(D_873968217_17_17,509607548)", + "equals(D_873968217_17_17,784922042)", + "equals(D_718867914_17_17,104430631)", + "equals(D_718867914_17_17,353358909)", + "equals(D_718867914_17_17,178420302)", + "equals(isNotDefined(D_714001034_18_18,false),false)", + "doesNotEqual(isNotDefined(D_714001034_18_18,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_18_18,false),false),greaterThan(18,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_18_18,false),false),equals(18,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_18_18,353358909)", + "doesNotEqual(D_418392907_18_18,353358909)", + "equals(D_812370563_18_18,939782495)", + "equals(D_812370563_18_18,135725957)", + "equals(D_812370563_18_18,518416174)", + "equals(D_812370563_18_18,847945207)", + "equals(D_812370563_18_18,283025574)", + "equals(D_812370563_18_18,942970912)", + "equals(D_812370563_18_18,596122041)", + "equals(D_812370563_18_18,489400183)", + "equals(D_812370563_18_18,863246236)", + "equals(D_812370563_18_18,607793249)", + "equals(D_812370563_18_18,532172400)", + "equals(D_812370563_18_18,754745617)", + "equals(D_812370563_18_18,665036297)", + "equals(D_812370563_18_18,200837530)", + "equals(D_812370563_18_18,990319383)", + "equals(D_812370563_18_18,487917585)", + "equals(D_812370563_18_18,603181162)", + "equals(D_812370563_18_18,482225200)", + "equals(D_812370563_18_18,295976386)", + "equals(D_812370563_18_18,764891959)", + "equals(D_812370563_18_18,248374037)", + "equals(D_812370563_18_18,139822395)", + "equals(D_812370563_18_18,723614811)", + "equals(D_812370563_18_18,807835037)", + "valueLength('D_933110091_18_18')>0", + "doesNotExist('D_933110091_18_18')", + "equals(D_812370563_18_18,178420302)", + "selectionCount(\"D_812370563_18_18\",true)>0 or valueLength(\"D_933110091_18_18\")>0", + "valueLength('D_714001034_18_18')>0", + "equals(D_887697329_18_18,536341288)", + "equals(D_887697329_18_18,654207589)", + "equals(D_887697329_18_18,178420302)", + "allExist('D_473529484_18_18','D_812370563_18_18')", + "equals(D_473529484_18_18,353358909)", + "equals(D_473529484_18_18,104430631)", + "equals(D_873968217_18_18,709650750)", + "equals(D_873968217_18_18,810290359)", + "equals(D_873968217_18_18,509607548)", + "equals(D_873968217_18_18,784922042)", + "equals(D_718867914_18_18,104430631)", + "equals(D_718867914_18_18,353358909)", + "equals(D_718867914_18_18,178420302)", + "equals(isNotDefined(D_714001034_19_19,false),false)", + "doesNotEqual(isNotDefined(D_714001034_19_19,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_19_19,false),false),greaterThan(19,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_19_19,false),false),equals(19,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_19_19,353358909)", + "doesNotEqual(D_418392907_19_19,353358909)", + "equals(D_812370563_19_19,939782495)", + "equals(D_812370563_19_19,135725957)", + "equals(D_812370563_19_19,518416174)", + "equals(D_812370563_19_19,847945207)", + "equals(D_812370563_19_19,283025574)", + "equals(D_812370563_19_19,942970912)", + "equals(D_812370563_19_19,596122041)", + "equals(D_812370563_19_19,489400183)", + "equals(D_812370563_19_19,863246236)", + "equals(D_812370563_19_19,607793249)", + "equals(D_812370563_19_19,532172400)", + "equals(D_812370563_19_19,754745617)", + "equals(D_812370563_19_19,665036297)", + "equals(D_812370563_19_19,200837530)", + "equals(D_812370563_19_19,990319383)", + "equals(D_812370563_19_19,487917585)", + "equals(D_812370563_19_19,603181162)", + "equals(D_812370563_19_19,482225200)", + "equals(D_812370563_19_19,295976386)", + "equals(D_812370563_19_19,764891959)", + "equals(D_812370563_19_19,248374037)", + "equals(D_812370563_19_19,139822395)", + "equals(D_812370563_19_19,723614811)", + "equals(D_812370563_19_19,807835037)", + "valueLength('D_933110091_19_19')>0", + "doesNotExist('D_933110091_19_19')", + "equals(D_812370563_19_19,178420302)", + "selectionCount(\"D_812370563_19_19\",true)>0 or valueLength(\"D_933110091_19_19\")>0", + "valueLength('D_714001034_19_19')>0", + "equals(D_887697329_19_19,536341288)", + "equals(D_887697329_19_19,654207589)", + "equals(D_887697329_19_19,178420302)", + "allExist('D_473529484_19_19','D_812370563_19_19')", + "equals(D_473529484_19_19,353358909)", + "equals(D_473529484_19_19,104430631)", + "equals(D_873968217_19_19,709650750)", + "equals(D_873968217_19_19,810290359)", + "equals(D_873968217_19_19,509607548)", + "equals(D_873968217_19_19,784922042)", + "equals(D_718867914_19_19,104430631)", + "equals(D_718867914_19_19,353358909)", + "equals(D_718867914_19_19,178420302)", + "equals(isNotDefined(D_714001034_20_20,false),false)", + "doesNotEqual(isNotDefined(D_714001034_20_20,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_20_20,false),false),greaterThan(20,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_20_20,false),false),equals(20,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_20_20,353358909)", + "doesNotEqual(D_418392907_20_20,353358909)", + "equals(D_812370563_20_20,939782495)", + "equals(D_812370563_20_20,135725957)", + "equals(D_812370563_20_20,518416174)", + "equals(D_812370563_20_20,847945207)", + "equals(D_812370563_20_20,283025574)", + "equals(D_812370563_20_20,942970912)", + "equals(D_812370563_20_20,596122041)", + "equals(D_812370563_20_20,489400183)", + "equals(D_812370563_20_20,863246236)", + "equals(D_812370563_20_20,607793249)", + "equals(D_812370563_20_20,532172400)", + "equals(D_812370563_20_20,754745617)", + "equals(D_812370563_20_20,665036297)", + "equals(D_812370563_20_20,200837530)", + "equals(D_812370563_20_20,990319383)", + "equals(D_812370563_20_20,487917585)", + "equals(D_812370563_20_20,603181162)", + "equals(D_812370563_20_20,482225200)", + "equals(D_812370563_20_20,295976386)", + "equals(D_812370563_20_20,764891959)", + "equals(D_812370563_20_20,248374037)", + "equals(D_812370563_20_20,139822395)", + "equals(D_812370563_20_20,723614811)", + "equals(D_812370563_20_20,807835037)", + "valueLength('D_933110091_20_20')>0", + "doesNotExist('D_933110091_20_20')", + "equals(D_812370563_20_20,178420302)", + "selectionCount(\"D_812370563_20_20\",true)>0 or valueLength(\"D_933110091_20_20\")>0", + "valueLength('D_714001034_20_20')>0", + "equals(D_887697329_20_20,536341288)", + "equals(D_887697329_20_20,654207589)", + "equals(D_887697329_20_20,178420302)", + "allExist('D_473529484_20_20','D_812370563_20_20')", + "equals(D_473529484_20_20,353358909)", + "equals(D_473529484_20_20,104430631)", + "equals(D_873968217_20_20,709650750)", + "equals(D_873968217_20_20,810290359)", + "equals(D_873968217_20_20,509607548)", + "equals(D_873968217_20_20,784922042)", + "equals(D_718867914_20_20,104430631)", + "equals(D_718867914_20_20,353358909)", + "equals(D_718867914_20_20,178420302)", + "equals(isNotDefined(D_714001034_21_21,false),false)", + "doesNotEqual(isNotDefined(D_714001034_21_21,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_21_21,false),false),greaterThan(21,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_21_21,false),false),equals(21,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_21_21,353358909)", + "doesNotEqual(D_418392907_21_21,353358909)", + "equals(D_812370563_21_21,939782495)", + "equals(D_812370563_21_21,135725957)", + "equals(D_812370563_21_21,518416174)", + "equals(D_812370563_21_21,847945207)", + "equals(D_812370563_21_21,283025574)", + "equals(D_812370563_21_21,942970912)", + "equals(D_812370563_21_21,596122041)", + "equals(D_812370563_21_21,489400183)", + "equals(D_812370563_21_21,863246236)", + "equals(D_812370563_21_21,607793249)", + "equals(D_812370563_21_21,532172400)", + "equals(D_812370563_21_21,754745617)", + "equals(D_812370563_21_21,665036297)", + "equals(D_812370563_21_21,200837530)", + "equals(D_812370563_21_21,990319383)", + "equals(D_812370563_21_21,487917585)", + "equals(D_812370563_21_21,603181162)", + "equals(D_812370563_21_21,482225200)", + "equals(D_812370563_21_21,295976386)", + "equals(D_812370563_21_21,764891959)", + "equals(D_812370563_21_21,248374037)", + "equals(D_812370563_21_21,139822395)", + "equals(D_812370563_21_21,723614811)", + "equals(D_812370563_21_21,807835037)", + "valueLength('D_933110091_21_21')>0", + "doesNotExist('D_933110091_21_21')", + "equals(D_812370563_21_21,178420302)", + "selectionCount(\"D_812370563_21_21\",true)>0 or valueLength(\"D_933110091_21_21\")>0", + "valueLength('D_714001034_21_21')>0", + "equals(D_887697329_21_21,536341288)", + "equals(D_887697329_21_21,654207589)", + "equals(D_887697329_21_21,178420302)", + "allExist('D_473529484_21_21','D_812370563_21_21')", + "equals(D_473529484_21_21,353358909)", + "equals(D_473529484_21_21,104430631)", + "equals(D_873968217_21_21,709650750)", + "equals(D_873968217_21_21,810290359)", + "equals(D_873968217_21_21,509607548)", + "equals(D_873968217_21_21,784922042)", + "equals(D_718867914_21_21,104430631)", + "equals(D_718867914_21_21,353358909)", + "equals(D_718867914_21_21,178420302)", + "equals(isNotDefined(D_714001034_22_22,false),false)", + "doesNotEqual(isNotDefined(D_714001034_22_22,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_22_22,false),false),greaterThan(22,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_22_22,false),false),equals(22,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_22_22,353358909)", + "doesNotEqual(D_418392907_22_22,353358909)", + "equals(D_812370563_22_22,939782495)", + "equals(D_812370563_22_22,135725957)", + "equals(D_812370563_22_22,518416174)", + "equals(D_812370563_22_22,847945207)", + "equals(D_812370563_22_22,283025574)", + "equals(D_812370563_22_22,942970912)", + "equals(D_812370563_22_22,596122041)", + "equals(D_812370563_22_22,489400183)", + "equals(D_812370563_22_22,863246236)", + "equals(D_812370563_22_22,607793249)", + "equals(D_812370563_22_22,532172400)", + "equals(D_812370563_22_22,754745617)", + "equals(D_812370563_22_22,665036297)", + "equals(D_812370563_22_22,200837530)", + "equals(D_812370563_22_22,990319383)", + "equals(D_812370563_22_22,487917585)", + "equals(D_812370563_22_22,603181162)", + "equals(D_812370563_22_22,482225200)", + "equals(D_812370563_22_22,295976386)", + "equals(D_812370563_22_22,764891959)", + "equals(D_812370563_22_22,248374037)", + "equals(D_812370563_22_22,139822395)", + "equals(D_812370563_22_22,723614811)", + "equals(D_812370563_22_22,807835037)", + "valueLength('D_933110091_22_22')>0", + "doesNotExist('D_933110091_22_22')", + "equals(D_812370563_22_22,178420302)", + "selectionCount(\"D_812370563_22_22\",true)>0 or valueLength(\"D_933110091_22_22\")>0", + "valueLength('D_714001034_22_22')>0", + "equals(D_887697329_22_22,536341288)", + "equals(D_887697329_22_22,654207589)", + "equals(D_887697329_22_22,178420302)", + "allExist('D_473529484_22_22','D_812370563_22_22')", + "equals(D_473529484_22_22,353358909)", + "equals(D_473529484_22_22,104430631)", + "equals(D_873968217_22_22,709650750)", + "equals(D_873968217_22_22,810290359)", + "equals(D_873968217_22_22,509607548)", + "equals(D_873968217_22_22,784922042)", + "equals(D_718867914_22_22,104430631)", + "equals(D_718867914_22_22,353358909)", + "equals(D_718867914_22_22,178420302)", + "equals(isNotDefined(D_714001034_23_23,false),false)", + "doesNotEqual(isNotDefined(D_714001034_23_23,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_23_23,false),false),greaterThan(23,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_23_23,false),false),equals(23,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_23_23,353358909)", + "doesNotEqual(D_418392907_23_23,353358909)", + "equals(D_812370563_23_23,939782495)", + "equals(D_812370563_23_23,135725957)", + "equals(D_812370563_23_23,518416174)", + "equals(D_812370563_23_23,847945207)", + "equals(D_812370563_23_23,283025574)", + "equals(D_812370563_23_23,942970912)", + "equals(D_812370563_23_23,596122041)", + "equals(D_812370563_23_23,489400183)", + "equals(D_812370563_23_23,863246236)", + "equals(D_812370563_23_23,607793249)", + "equals(D_812370563_23_23,532172400)", + "equals(D_812370563_23_23,754745617)", + "equals(D_812370563_23_23,665036297)", + "equals(D_812370563_23_23,200837530)", + "equals(D_812370563_23_23,990319383)", + "equals(D_812370563_23_23,487917585)", + "equals(D_812370563_23_23,603181162)", + "equals(D_812370563_23_23,482225200)", + "equals(D_812370563_23_23,295976386)", + "equals(D_812370563_23_23,764891959)", + "equals(D_812370563_23_23,248374037)", + "equals(D_812370563_23_23,139822395)", + "equals(D_812370563_23_23,723614811)", + "equals(D_812370563_23_23,807835037)", + "valueLength('D_933110091_23_23')>0", + "doesNotExist('D_933110091_23_23')", + "equals(D_812370563_23_23,178420302)", + "selectionCount(\"D_812370563_23_23\",true)>0 or valueLength(\"D_933110091_23_23\")>0", + "valueLength('D_714001034_23_23')>0", + "equals(D_887697329_23_23,536341288)", + "equals(D_887697329_23_23,654207589)", + "equals(D_887697329_23_23,178420302)", + "allExist('D_473529484_23_23','D_812370563_23_23')", + "equals(D_473529484_23_23,353358909)", + "equals(D_473529484_23_23,104430631)", + "equals(D_873968217_23_23,709650750)", + "equals(D_873968217_23_23,810290359)", + "equals(D_873968217_23_23,509607548)", + "equals(D_873968217_23_23,784922042)", + "equals(D_718867914_23_23,104430631)", + "equals(D_718867914_23_23,353358909)", + "equals(D_718867914_23_23,178420302)", + "equals(isNotDefined(D_714001034_24_24,false),false)", + "doesNotEqual(isNotDefined(D_714001034_24_24,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_24_24,false),false),greaterThan(24,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_24_24,false),false),equals(24,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_24_24,353358909)", + "doesNotEqual(D_418392907_24_24,353358909)", + "equals(D_812370563_24_24,939782495)", + "equals(D_812370563_24_24,135725957)", + "equals(D_812370563_24_24,518416174)", + "equals(D_812370563_24_24,847945207)", + "equals(D_812370563_24_24,283025574)", + "equals(D_812370563_24_24,942970912)", + "equals(D_812370563_24_24,596122041)", + "equals(D_812370563_24_24,489400183)", + "equals(D_812370563_24_24,863246236)", + "equals(D_812370563_24_24,607793249)", + "equals(D_812370563_24_24,532172400)", + "equals(D_812370563_24_24,754745617)", + "equals(D_812370563_24_24,665036297)", + "equals(D_812370563_24_24,200837530)", + "equals(D_812370563_24_24,990319383)", + "equals(D_812370563_24_24,487917585)", + "equals(D_812370563_24_24,603181162)", + "equals(D_812370563_24_24,482225200)", + "equals(D_812370563_24_24,295976386)", + "equals(D_812370563_24_24,764891959)", + "equals(D_812370563_24_24,248374037)", + "equals(D_812370563_24_24,139822395)", + "equals(D_812370563_24_24,723614811)", + "equals(D_812370563_24_24,807835037)", + "valueLength('D_933110091_24_24')>0", + "doesNotExist('D_933110091_24_24')", + "equals(D_812370563_24_24,178420302)", + "selectionCount(\"D_812370563_24_24\",true)>0 or valueLength(\"D_933110091_24_24\")>0", + "valueLength('D_714001034_24_24')>0", + "equals(D_887697329_24_24,536341288)", + "equals(D_887697329_24_24,654207589)", + "equals(D_887697329_24_24,178420302)", + "allExist('D_473529484_24_24','D_812370563_24_24')", + "equals(D_473529484_24_24,353358909)", + "equals(D_473529484_24_24,104430631)", + "equals(D_873968217_24_24,709650750)", + "equals(D_873968217_24_24,810290359)", + "equals(D_873968217_24_24,509607548)", + "equals(D_873968217_24_24,784922042)", + "equals(D_718867914_24_24,104430631)", + "equals(D_718867914_24_24,353358909)", + "equals(D_718867914_24_24,178420302)", + "equals(isNotDefined(D_714001034_25_25,false),false)", + "doesNotEqual(isNotDefined(D_714001034_25_25,false),false)", + "and(doesNotEqual(isNotDefined(D_714001034_25_25,false),false),greaterThan(25,1))", + "and(and(doesNotEqual(isNotDefined(D_714001034_25_25,false),false),equals(25,1)),doesNotEqual(D_446999144,1))", + "equals(D_418392907_25_25,353358909)", + "doesNotEqual(D_418392907_25_25,353358909)", + "equals(D_812370563_25_25,939782495)", + "equals(D_812370563_25_25,135725957)", + "equals(D_812370563_25_25,518416174)", + "equals(D_812370563_25_25,847945207)", + "equals(D_812370563_25_25,283025574)", + "equals(D_812370563_25_25,942970912)", + "equals(D_812370563_25_25,596122041)", + "equals(D_812370563_25_25,489400183)", + "equals(D_812370563_25_25,863246236)", + "equals(D_812370563_25_25,607793249)", + "equals(D_812370563_25_25,532172400)", + "equals(D_812370563_25_25,754745617)", + "equals(D_812370563_25_25,665036297)", + "equals(D_812370563_25_25,200837530)", + "equals(D_812370563_25_25,990319383)", + "equals(D_812370563_25_25,487917585)", + "equals(D_812370563_25_25,603181162)", + "equals(D_812370563_25_25,482225200)", + "equals(D_812370563_25_25,295976386)", + "equals(D_812370563_25_25,764891959)", + "equals(D_812370563_25_25,248374037)", + "equals(D_812370563_25_25,139822395)", + "equals(D_812370563_25_25,723614811)", + "equals(D_812370563_25_25,807835037)", + "valueLength('D_933110091_25_25')>0", + "doesNotExist('D_933110091_25_25')", + "equals(D_812370563_25_25,178420302)", + "selectionCount(\"D_812370563_25_25\",true)>0 or valueLength(\"D_933110091_25_25\")>0", + "valueLength('D_714001034_25_25')>0", + "equals(D_887697329_25_25,536341288)", + "equals(D_887697329_25_25,654207589)", + "equals(D_887697329_25_25,178420302)", + "allExist('D_473529484_25_25','D_812370563_25_25')", + "equals(D_473529484_25_25,353358909)", + "equals(D_473529484_25_25,104430631)", + "equals(D_873968217_25_25,709650750)", + "equals(D_873968217_25_25,810290359)", + "equals(D_873968217_25_25,509607548)", + "equals(D_873968217_25_25,784922042)", + "equals(D_718867914_25_25,104430631)", + "equals(D_718867914_25_25,353358909)", + "equals(D_718867914_25_25,178420302)" + ], + "sitesByScope": { + "inline": 4283, + "question": 1500, + "response": 12 + }, + "sitesByAttribute": { + "displayif": 5795 + } + }, + "grids": [], + "loops": [ + { + "loopIndex": "1", + "loopMaxQuestionIds": [ + "D_694265648" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 218, + 253, + 288, + 323, + 358, + 393, + 428, + 463, + 498, + 533, + 568, + 603, + 638, + 673, + 708, + 743, + 778, + 813, + 848, + 883, + 918, + 953, + 988, + 1023, + 1058 + ], + "boundaryIndex": 1093 + }, + { + "loopIndex": "2", + "loopMaxQuestionIds": [ + "D_446999144" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 1097, + 1132, + 1167, + 1202, + 1237, + 1272, + 1307, + 1342, + 1377, + 1412, + 1447, + 1482, + 1517, + 1552, + 1587, + 1622, + 1657, + 1692, + 1727, + 1762, + 1797, + 1832, + 1867, + 1902, + 1937 + ], + "boundaryIndex": 1972 + } + ], + "unresolvedTargets": [], + "asyncQuestionIds": [ + "D_279637054", + "D_761310265" + ], + "counts": { + "authoredMarkerCount": 315, + "processorQuestionCount": 1998, + "processedQuestionCount": 1998, + "renderedFormCount": 1998, + "controlCount": 11660, + "responseControlCount": 5610, + "explicitTransitionCount": 1831, + "sequentialAdjacencyCount": 1997, + "resolvedExplicitTransitionCount": 1831, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 5795, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 50, + "loopDefinitionCount": 2, + "loopExpandedQuestionCount": 1750, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 2620 + } + }, + { + "schemaVersion": 1, + "module": "module2", + "locale": "en", + "language": "en", + "path": "prod/module2.txt", + "sha256": "a7b9dba4edd27d55ccb3830b0b54b8d4fa7003a1d2a9c1c79749aaeeaa4f664f", + "questName": "D_745268907_V2", + "version": "2.3", + "authoredMarkerCount": 359, + "runtimeQuestionIds": [ + "INTROM2", + "SECTION1", + "D_399982309?", + "D_861838892?", + "D_596961796?", + "D_113681507?", + "D_177526169?", + "D_564374538?", + "D_643807999?", + "D_837412550?", + "D_825189914?", + "D_615979584?", + "D_814141708?", + "D_265428345?", + "D_275143071?", + "D_388804810?", + "D_753416375?", + "D_771526486?", + "D_292658699?", + "D_491549803?", + "D_152138929?", + "D_614446276?", + "D_646042915?", + "D_270254670?", + "D_861824298?", + "D_846227588?", + "D_630231395?", + "D_234177873?", + "D_799338907?", + "D_376720409?", + "D_575646308?", + "D_798182168?", + "D_655266993?", + "D_248599913?", + "D_893965588?", + "D_439072744?", + "D_733861762?", + "D_322479862?", + "D_509383583?", + "D_697661603?", + "D_438682764?", + "D_445571225?", + "D_761822652?", + "D_737490587?", + "D_887435355?", + "D_414005872?", + "D_614123836?", + "D_731790154?", + "D_550092533?", + "D_163057677?", + "D_225047594?", + "D_297084062?", + "D_305292465?", + "D_901498441?", + "D_147792229?", + "D_976052812?", + "D_991427384?", + "D_112024853?", + "D_694817520?", + "D_991622246?", + "D_450131058?", + "D_991873978?", + "D_371176229?", + "D_982448213?", + "D_745223146?", + "D_273218182?", + "D_850202336?", + "D_799903478?", + "D_465635548?", + "D_556235252?", + "D_643361372?", + "D_172234651?", + "D_753610471?", + "D_424183977?", + "D_824287808?", + "D_889053435?", + "D_416865817?", + "D_803968511?", + "D_378572291?", + "D_846978339?", + "D_936366310?", + "D_266752903?", + "D_618427836?", + "D_774514900?", + "D_368595692?", + "D_497904005?", + "SECTION2", + "SECTION2_SKIPPED", + "INTROWH", + "INTROMENSHIS", + "D_496539718?", + "D_167997205?", + "D_972593606?", + "D_791830593?", + "INTROMENSHIS2", + "D_547633480?", + "D_164595895?", + "D_263114971?", + "D_614145455?", + "D_534920374?", + "PREG", + "D_849945160?", + "D_996243083?", + "D_405571048!", + "D_968816827_1_1?", + "D_391951010_1_1?", + "D_281494550_1_1?", + "D_771528780_1_1?", + "D_486574018_1_1?", + "D_278277373_1_1?", + "D_779052408_1_1?", + "D_133297530_1_1?", + "PREGSUMMARY_1_1", + "D_968816827_2_2?", + "D_391951010_2_2?", + "D_281494550_2_2?", + "D_771528780_2_2?", + "D_486574018_2_2?", + "D_278277373_2_2?", + "D_779052408_2_2?", + "D_133297530_2_2?", + "PREGSUMMARY_2_2", + "D_968816827_3_3?", + "D_391951010_3_3?", + "D_281494550_3_3?", + "D_771528780_3_3?", + "D_486574018_3_3?", + "D_278277373_3_3?", + "D_779052408_3_3?", + "D_133297530_3_3?", + "PREGSUMMARY_3_3", + "D_968816827_4_4?", + "D_391951010_4_4?", + "D_281494550_4_4?", + "D_771528780_4_4?", + "D_486574018_4_4?", + "D_278277373_4_4?", + "D_779052408_4_4?", + "D_133297530_4_4?", + "PREGSUMMARY_4_4", + "D_968816827_5_5?", + "D_391951010_5_5?", + "D_281494550_5_5?", + "D_771528780_5_5?", + "D_486574018_5_5?", + "D_278277373_5_5?", + "D_779052408_5_5?", + "D_133297530_5_5?", + "PREGSUMMARY_5_5", + "D_968816827_6_6?", + "D_391951010_6_6?", + "D_281494550_6_6?", + "D_771528780_6_6?", + "D_486574018_6_6?", + "D_278277373_6_6?", + "D_779052408_6_6?", + "D_133297530_6_6?", + "PREGSUMMARY_6_6", + "D_968816827_7_7?", + "D_391951010_7_7?", + "D_281494550_7_7?", + "D_771528780_7_7?", + "D_486574018_7_7?", + "D_278277373_7_7?", + "D_779052408_7_7?", + "D_133297530_7_7?", + "PREGSUMMARY_7_7", + "D_968816827_8_8?", + "D_391951010_8_8?", + "D_281494550_8_8?", + "D_771528780_8_8?", + "D_486574018_8_8?", + "D_278277373_8_8?", + "D_779052408_8_8?", + "D_133297530_8_8?", + "PREGSUMMARY_8_8", + "D_968816827_9_9?", + "D_391951010_9_9?", + "D_281494550_9_9?", + "D_771528780_9_9?", + "D_486574018_9_9?", + "D_278277373_9_9?", + "D_779052408_9_9?", + "D_133297530_9_9?", + "PREGSUMMARY_9_9", + "D_968816827_10_10?", + "D_391951010_10_10?", + "D_281494550_10_10?", + "D_771528780_10_10?", + "D_486574018_10_10?", + "D_278277373_10_10?", + "D_779052408_10_10?", + "D_133297530_10_10?", + "PREGSUMMARY_10_10", + "D_968816827_11_11?", + "D_391951010_11_11?", + "D_281494550_11_11?", + "D_771528780_11_11?", + "D_486574018_11_11?", + "D_278277373_11_11?", + "D_779052408_11_11?", + "D_133297530_11_11?", + "PREGSUMMARY_11_11", + "D_968816827_12_12?", + "D_391951010_12_12?", + "D_281494550_12_12?", + "D_771528780_12_12?", + "D_486574018_12_12?", + "D_278277373_12_12?", + "D_779052408_12_12?", + "D_133297530_12_12?", + "PREGSUMMARY_12_12", + "D_968816827_13_13?", + "D_391951010_13_13?", + "D_281494550_13_13?", + "D_771528780_13_13?", + "D_486574018_13_13?", + "D_278277373_13_13?", + "D_779052408_13_13?", + "D_133297530_13_13?", + "PREGSUMMARY_13_13", + "D_968816827_14_14?", + "D_391951010_14_14?", + "D_281494550_14_14?", + "D_771528780_14_14?", + "D_486574018_14_14?", + "D_278277373_14_14?", + "D_779052408_14_14?", + "D_133297530_14_14?", + "PREGSUMMARY_14_14", + "D_968816827_15_15?", + "D_391951010_15_15?", + "D_281494550_15_15?", + "D_771528780_15_15?", + "D_486574018_15_15?", + "D_278277373_15_15?", + "D_779052408_15_15?", + "D_133297530_15_15?", + "PREGSUMMARY_15_15", + "D_968816827_16_16?", + "D_391951010_16_16?", + "D_281494550_16_16?", + "D_771528780_16_16?", + "D_486574018_16_16?", + "D_278277373_16_16?", + "D_779052408_16_16?", + "D_133297530_16_16?", + "PREGSUMMARY_16_16", + "D_968816827_17_17?", + "D_391951010_17_17?", + "D_281494550_17_17?", + "D_771528780_17_17?", + "D_486574018_17_17?", + "D_278277373_17_17?", + "D_779052408_17_17?", + "D_133297530_17_17?", + "PREGSUMMARY_17_17", + "D_968816827_18_18?", + "D_391951010_18_18?", + "D_281494550_18_18?", + "D_771528780_18_18?", + "D_486574018_18_18?", + "D_278277373_18_18?", + "D_779052408_18_18?", + "D_133297530_18_18?", + "PREGSUMMARY_18_18", + "D_968816827_19_19?", + "D_391951010_19_19?", + "D_281494550_19_19?", + "D_771528780_19_19?", + "D_486574018_19_19?", + "D_278277373_19_19?", + "D_779052408_19_19?", + "D_133297530_19_19?", + "PREGSUMMARY_19_19", + "D_968816827_20_20?", + "D_391951010_20_20?", + "D_281494550_20_20?", + "D_771528780_20_20?", + "D_486574018_20_20?", + "D_278277373_20_20?", + "D_779052408_20_20?", + "D_133297530_20_20?", + "PREGSUMMARY_20_20", + "D_968816827_21_21?", + "D_391951010_21_21?", + "D_281494550_21_21?", + "D_771528780_21_21?", + "D_486574018_21_21?", + "D_278277373_21_21?", + "D_779052408_21_21?", + "D_133297530_21_21?", + "PREGSUMMARY_21_21", + "D_968816827_22_22?", + "D_391951010_22_22?", + "D_281494550_22_22?", + "D_771528780_22_22?", + "D_486574018_22_22?", + "D_278277373_22_22?", + "D_779052408_22_22?", + "D_133297530_22_22?", + "PREGSUMMARY_22_22", + "D_968816827_23_23?", + "D_391951010_23_23?", + "D_281494550_23_23?", + "D_771528780_23_23?", + "D_486574018_23_23?", + "D_278277373_23_23?", + "D_779052408_23_23?", + "D_133297530_23_23?", + "PREGSUMMARY_23_23", + "D_968816827_24_24?", + "D_391951010_24_24?", + "D_281494550_24_24?", + "D_771528780_24_24?", + "D_486574018_24_24?", + "D_278277373_24_24?", + "D_779052408_24_24?", + "D_133297530_24_24?", + "PREGSUMMARY_24_24", + "D_968816827_25_25?", + "D_391951010_25_25?", + "D_281494550_25_25?", + "D_771528780_25_25?", + "D_486574018_25_25?", + "D_278277373_25_25?", + "D_779052408_25_25?", + "D_133297530_25_25?", + "PREGSUMMARY_25_25", + "END_OF_LOOP", + "FERT1", + "D_939897560?", + "D_760801131?", + "D_424047361?", + "D_548355426?", + "D_224681201?", + "D_881200765?", + "D_139673389?", + "D_943996164?", + "D_994899398?", + "D_198719822?", + "D_628137243?", + "D_399078599?", + "D_560711355?", + "D_309710463?", + "D_167207966?", + "D_538349354?", + "D_767785846?", + "D_466346054?", + "D_111082535?", + "D_875135634?", + "HORMED", + "D_543780863?", + "D_880331901?", + "D_301052397?", + "D_734836192?", + "D_215455305?", + "D_809735528?", + "D_958009220?", + "D_946211808?", + "D_654271781?", + "D_220105997?", + "D_806253825?", + "D_819957363?", + "D_604086099?", + "D_938969985?", + "D_876683805?", + "D_118237712?", + "D_899455852?", + "D_902999015?", + "D_484006644?", + "D_190721176?", + "D_358011592?", + "D_807214881?", + "D_344573484?", + "D_708921303?", + "D_535533643?", + "D_901154649?", + "D_100937200?", + "D_452984435?", + "D_129924389?", + "D_404596261?", + "D_465017353?", + "D_370798456?", + "D_101144925?", + "D_583012139?", + "D_991330361?", + "D_184692605?", + "D_139348254?", + "MENOHOR", + "D_621744463?", + "D_668834883?", + "D_856627601?", + "D_801749224?", + "D_799382711?", + "D_623759247?", + "D_564185028?", + "D_560845692?", + "D_779165920?", + "D_745775718?", + "D_648678282?", + "D_850536692?", + "D_774992239?", + "D_695206943?", + "D_291707744?", + "D_792792066?", + "D_894363067?", + "D_984901301?", + "D_872509317?", + "D_378921620?", + "D_854078473?", + "D_268372217?", + "D_800943768?", + "D_590329439?", + "D_906459952?", + "D_747629521?", + "D_556129044?", + "D_563663099?", + "D_356969766?", + "D_453820991?", + "D_111271067?", + "D_597869478?", + "D_949663397?", + "D_263785082?", + "D_824165133?", + "D_295472931?", + "D_728437398?", + "D_578176688?", + "D_922903688?", + "D_963284259?", + "D_615905904?", + "D_946710366?", + "D_219538082?", + "D_583111732?", + "D_603209609?", + "D_824251330?", + "D_912818075?", + "D_138836502?", + "D_290126991?", + "TESTTHER_INTRO", + "D_111235606?", + "D_946849196?", + "D_797076693?", + "D_984514646?", + "D_414663452?", + "D_570187182?", + "D_557526470?", + "D_492822047?", + "D_466727144?", + "D_307736999?", + "D_305195766?", + "WORKACT", + "D_392658845", + "INTROSITTING", + "D_649352910", + "HOUSE1", + "D_733547268", + "D_128705365", + "D_204421360?", + "D_442059084?", + "D_992022740?", + "D_429531329?", + "D_829749579?", + "D_888313306?", + "D_644018981?", + "D_618482103?", + "D_352531133?", + "D_267261558?", + "D_517976064?", + "D_894610280?", + "D_267122668?", + "D_901660173?", + "D_222110888?", + "D_953510929?", + "D_422260069?", + "D_564242877?", + "D_411788467?", + "D_141251197?", + "D_635874413?", + "D_184448791?", + "D_768302347?", + "D_371748514?", + "D_944699052?", + "D_658018390?", + "D_858525957?", + "D_849399881?", + "D_406846149?", + "D_787591805?", + "D_689956879?", + "D_725713485?", + "D_900299856?", + "D_255761998?", + "D_571361258?", + "D_149884127?", + "D_167966775?", + "D_904844824?", + "D_845164425?", + "D_612068433?", + "D_650405110?", + "D_187772368?", + "D_865200503?", + "D_831643763?", + "D_815229596?", + "D_981509686?", + "D_921220809?", + "D_262305264?", + "D_214750556?", + "D_621878019?", + "D_409324592?", + "D_775324618?", + "D_305312165?", + "D_895837106?", + "D_522949496?", + "D_272119228?", + "SECTION4", + "D_591723682?", + "D_168431681?", + "INTROSLESCH1", + "INTROSLESCH1_1", + "D_636757313?", + "D_653906464?", + "D_580367946?", + "D_358259099?", + "D_392629868?", + "D_354980163?", + "D_424807655?", + "INTROSLESCH2", + "D_823919522?", + "D_532767229?", + "D_698673038?", + "D_711365027?", + "D_874262904?", + "D_820694957?", + "D_823541843?", + "D_825227968?", + "SLEEPHABITS", + "D_421859821", + "D_910856756?", + "D_981441822", + "D_471018082?", + "D_940733450?", + "D_406137786?", + "D_631303960?", + "D_876846761?", + "D_756521698?", + "D_479628567?", + "D_629010195?", + "D_674976924?", + "D_195662769?", + "D_214870856?", + "D_680730257?", + "D_392874924?", + "D_199254974?", + "END" + ], + "responseControlsByType": { + "checkbox": 244, + "number": 236, + "radio": 1105, + "text": 9, + "time": 6 + }, + "explicitTransitions": { + "targets": [ + "D_861838892", + "D_837412550", + "D_388804810", + "D_614446276", + "D_234177873", + "D_248599913", + "D_697661603", + "D_414005872", + "D_596961796", + "D_113681507", + "D_177526169", + "D_643807999", + "D_564374538", + "D_825189914", + "D_615979584", + "D_814141708", + "D_275143071", + "D_265428345", + "D_753416375", + "D_771526486", + "D_292658699", + "D_152138929", + "D_491549803", + "D_646042915", + "D_270254670", + "D_861824298", + "D_630231395", + "D_846227588", + "D_799338907", + "D_376720409", + "D_575646308", + "D_655266993", + "D_798182168", + "D_893965588", + "D_439072744", + "D_733861762", + "D_509383583", + "D_322479862", + "D_438682764", + "D_445571225", + "D_761822652", + "D_887435355", + "D_737490587", + "D_731790154", + "D_305292465", + "D_112024853", + "D_550092533", + "D_163057677", + "D_225047594", + "D_297084062", + "D_901498441", + "D_147792229", + "D_976052812", + "D_991427384", + "D_694817520", + "D_982448213", + "D_371176229", + "D_745223146", + "D_643361372", + "D_556235252", + "D_172234651", + "D_416865817", + "D_266752903", + "SECTION2", + "D_753610471", + "D_424183977", + "D_824287808", + "D_889053435", + "D_803968511", + "D_378572291", + "D_846978339", + "D_936366310", + "D_618427836", + "D_774514900", + "D_368595692", + "D_497904005", + "D_111235606", + "INTROMENSHIS2", + "D_972593606", + "D_791830593", + "D_534920374", + "D_614145455", + "PREG", + "D_263114971", + "D_405571048", + "D_996243083", + "FERT1", + "D_771528780_1_1", + "PREGSUMMARY_1_1", + "D_779052408_1_1", + "D_771528780_2_2", + "PREGSUMMARY_2_2", + "D_779052408_2_2", + "D_771528780_3_3", + "PREGSUMMARY_3_3", + "D_779052408_3_3", + "D_771528780_4_4", + "PREGSUMMARY_4_4", + "D_779052408_4_4", + "D_771528780_5_5", + "PREGSUMMARY_5_5", + "D_779052408_5_5", + "D_771528780_6_6", + "PREGSUMMARY_6_6", + "D_779052408_6_6", + "D_771528780_7_7", + "PREGSUMMARY_7_7", + "D_779052408_7_7", + "D_771528780_8_8", + "PREGSUMMARY_8_8", + "D_779052408_8_8", + "D_771528780_9_9", + "PREGSUMMARY_9_9", + "D_779052408_9_9", + "D_771528780_10_10", + "PREGSUMMARY_10_10", + "D_779052408_10_10", + "D_771528780_11_11", + "PREGSUMMARY_11_11", + "D_779052408_11_11", + "D_771528780_12_12", + "PREGSUMMARY_12_12", + "D_779052408_12_12", + "D_771528780_13_13", + "PREGSUMMARY_13_13", + "D_779052408_13_13", + "D_771528780_14_14", + "PREGSUMMARY_14_14", + "D_779052408_14_14", + "D_771528780_15_15", + "PREGSUMMARY_15_15", + "D_779052408_15_15", + "D_771528780_16_16", + "PREGSUMMARY_16_16", + "D_779052408_16_16", + "D_771528780_17_17", + "PREGSUMMARY_17_17", + "D_779052408_17_17", + "D_771528780_18_18", + "PREGSUMMARY_18_18", + "D_779052408_18_18", + "D_771528780_19_19", + "PREGSUMMARY_19_19", + "D_779052408_19_19", + "D_771528780_20_20", + "PREGSUMMARY_20_20", + "D_779052408_20_20", + "D_771528780_21_21", + "PREGSUMMARY_21_21", + "D_779052408_21_21", + "D_771528780_22_22", + "PREGSUMMARY_22_22", + "D_779052408_22_22", + "D_771528780_23_23", + "PREGSUMMARY_23_23", + "D_779052408_23_23", + "D_771528780_24_24", + "PREGSUMMARY_24_24", + "D_779052408_24_24", + "D_771528780_25_25", + "PREGSUMMARY_25_25", + "D_779052408_25_25", + "D_224681201", + "D_111082535", + "D_139673389", + "D_943996164", + "D_994899398", + "D_198719822", + "D_628137243", + "D_399078599", + "D_560711355", + "D_309710463", + "D_167207966", + "D_538349354", + "D_767785846", + "D_466346054", + "D_875135634", + "HORMED", + "D_880331901", + "D_809735528", + "D_220105997", + "D_938969985", + "D_902999015", + "D_807214881", + "D_901154649", + "D_404596261", + "D_583012139", + "MENOHOR", + "D_301052397", + "D_215455305", + "D_734836192", + "D_958009220", + "D_654271781", + "D_946211808", + "D_806253825", + "D_604086099", + "D_819957363", + "D_876683805", + "D_899455852", + "D_118237712", + "D_484006644", + "D_358011592", + "D_190721176", + "D_344573484", + "D_535533643", + "D_708921303", + "D_100937200", + "D_129924389", + "D_452984435", + "D_465017353", + "D_101144925", + "D_370798456", + "D_991330361", + "D_139348254", + "D_184692605", + "D_668834883", + "WORKACT", + "D_856627601", + "D_564185028", + "D_648678282", + "D_291707744", + "D_872509317", + "D_800943768", + "D_801749224", + "D_623759247", + "D_799382711", + "D_560845692", + "D_745775718", + "D_779165920", + "D_850536692", + "D_695206943", + "D_774992239", + "D_792792066", + "D_984901301", + "D_894363067", + "D_378921620", + "D_268372217", + "D_854078473", + "D_590329439", + "D_356969766", + "D_263785082", + "D_906459952", + "D_556129044", + "D_747629521", + "D_563663099", + "D_453820991", + "D_597869478", + "D_111271067", + "D_949663397", + "D_824165133", + "D_922903688", + "D_219538082", + "TESTTHER_INTRO", + "D_295472931", + "D_578176688", + "D_728437398", + "D_963284259", + "D_946710366", + "D_615905904", + "D_583111732", + "D_824251330", + "D_603209609", + "D_290126991", + "D_570187182", + "D_557526470", + "D_305195766", + "D_307736999", + "D_442059084", + "D_829749579", + "D_618482103", + "D_517976064", + "D_992022740", + "D_429531329", + "D_888313306", + "D_644018981", + "D_352531133", + "D_267261558", + "D_894610280", + "D_222110888", + "D_564242877", + "D_635874413", + "D_371748514", + "D_858525957", + "D_787591805", + "D_900299856", + "D_149884127", + "D_845164425", + "D_187772368", + "D_815229596", + "D_262305264", + "D_409324592", + "D_895837106", + "SECTION4", + "D_267122668", + "D_901660173", + "D_953510929", + "D_422260069", + "D_411788467", + "D_141251197", + "D_184448791", + "D_768302347", + "D_944699052", + "D_658018390", + "D_849399881", + "D_406846149", + "D_689956879", + "D_725713485", + "D_255761998", + "D_571361258", + "D_167966775", + "D_904844824", + "D_612068433", + "D_650405110", + "D_865200503", + "D_831643763", + "D_981509686", + "D_921220809", + "D_214750556", + "D_621878019", + "D_775324618", + "D_305312165", + "D_522949496", + "D_272119228", + "D_168431681", + "INTROSLESCH1", + "D_636757313", + "D_354980163", + "D_424807655", + "D_820694957", + "D_823541843", + "D_406137786", + "D_479628567", + "D_631303960", + "D_876846761", + "D_756521698", + "D_629010195", + "D_674976924", + "D_195662769", + "END" + ], + "byKind": { + "default": 140, + "no-response": 104, + "response": 314 + }, + "byResolution": { + "exact": 555, + "terminal": 3 + }, + "triggerTypes": { + "checkbox": 65, + "hidden": 244, + "radio": 249 + }, + "triggerValues": [ + "469512398", + "194424439", + "422188606", + "555555502", + "800410166", + "221645137", + "974248369", + "317567178", + "484055234", + "802197176", + "480724806", + "819373917", + "353358909", + "104430631", + "933374659", + "920460744", + "449861632", + "648960871", + "868025301", + "939110313", + "410083265", + "718537646", + "801142243", + "178420302", + "549031911", + "858427002", + "471375042", + "386152189", + "650420270", + "113064256", + "548167685", + "859025516", + "582425113", + "330745988", + "909774794", + "868504994", + "655309065", + "757609794", + "585076356", + "807835037", + "223216393", + "306890578", + "858244199", + "746038746", + "619799524", + "663814928", + "642004888", + "454641975", + "256131117", + "532607252", + "459188493", + "304927036", + "100181644", + "372219003", + "743731422", + "441493408", + "612012325", + "100752105", + "207913198", + "863920008", + "787142499", + "205223932", + "817131019", + "181769837", + "246843973", + "854184254", + "515434780", + "674148137", + "687050279", + "837393880", + "944874693", + "535003378", + "797221287", + "500744195", + "383015037", + "904954920", + "619501806", + "203192394", + "261267696", + "926584500", + "420058896", + "868685663", + "760484278", + "345916806", + "936042582", + "182827107", + "734860227", + "371531887", + "423631576", + "370923702", + "958538953", + "274062548" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "valueIsOneOf('D_750420077',578416151,434651539) or valueEquals('D_407056417',536341288)", + "valueIsOneOf(\"D_750420077\",578416151,434651539) or valueEquals(\"D_407056417\",536341288)", + "equals(D_643361372,933374659)", + "equals(D_643361372,920460744)", + "equals(D_643361372,449861632)", + "not (equals(\"D_407056417\",536341288) or valueIsOneOf(\"D_750420077\",578416151,434651539))", + "equals(\"D_407056417\",536341288) or valueIsOneOf(\"D_750420077\",578416151,434651539)", + "doesNotEqual(D_496539718,648960871)", + "greaterThanOrEqual(D_405571048,1)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,1)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,1)))", + "equals(D_391951010_1_1,628445697)", + "equals(D_391951010_1_1,419220239)", + "or(equals(D_391951010_1_1,223216393),equals(D_391951010_1_1,628445697))", + "equals(D_391951010_1_1,223216393)", + "equals(D_391951010_1_1,306890578)", + "equals(D_391951010_1_1,858244199)", + "equals(D_391951010_1_1,746038746)", + "valueIsOneOf('D_391951010_1_1',628445697,419220239)", + "equals(D_281494550_1_1,582602017)", + "equals(D_281494550_1_1,105727261)", + "equals(D_281494550_1_1,720288326)", + "valueIsOneOf('D_391951010_1_1',223216393,628445697,419220239)", + "equals(D_771528780_1_1,660308254)", + "equals(D_771528780_1_1,936573532)", + "equals(D_486574018_1_1,353358909)", + "equals(D_486574018_1_1,104430631)", + "valueIsOneOf('D_391951010_1_1',223216393,628445697,419220239,858244199)", + "equals(D_779052408_1_1,353358909)", + "equals(D_779052408_1_1,104430631)", + "equals(D_133297530_1_1,353358909)", + "equals(D_133297530_1_1,104430631)", + "greaterThanOrEqual(D_405571048,2)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,2)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,2)))", + "equals(D_391951010_2_2,628445697)", + "equals(D_391951010_2_2,419220239)", + "or(equals(D_391951010_2_2,223216393),equals(D_391951010_2_2,628445697))", + "equals(D_391951010_2_2,223216393)", + "equals(D_391951010_2_2,306890578)", + "equals(D_391951010_2_2,858244199)", + "equals(D_391951010_2_2,746038746)", + "valueIsOneOf('D_391951010_2_2',628445697,419220239)", + "equals(D_281494550_2_2,582602017)", + "equals(D_281494550_2_2,105727261)", + "equals(D_281494550_2_2,720288326)", + "valueIsOneOf('D_391951010_2_2',223216393,628445697,419220239)", + "equals(D_771528780_2_2,660308254)", + "equals(D_771528780_2_2,936573532)", + "equals(D_486574018_2_2,353358909)", + "equals(D_486574018_2_2,104430631)", + "valueIsOneOf('D_391951010_2_2',223216393,628445697,419220239,858244199)", + "equals(D_779052408_2_2,353358909)", + "equals(D_779052408_2_2,104430631)", + "equals(D_133297530_2_2,353358909)", + "equals(D_133297530_2_2,104430631)", + "greaterThanOrEqual(D_405571048,3)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,3)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,3)))", + "equals(D_391951010_3_3,628445697)", + "equals(D_391951010_3_3,419220239)", + "or(equals(D_391951010_3_3,223216393),equals(D_391951010_3_3,628445697))", + "equals(D_391951010_3_3,223216393)", + "equals(D_391951010_3_3,306890578)", + "equals(D_391951010_3_3,858244199)", + "equals(D_391951010_3_3,746038746)", + "valueIsOneOf('D_391951010_3_3',628445697,419220239)", + "equals(D_281494550_3_3,582602017)", + "equals(D_281494550_3_3,105727261)", + "equals(D_281494550_3_3,720288326)", + "valueIsOneOf('D_391951010_3_3',223216393,628445697,419220239)", + "equals(D_771528780_3_3,660308254)", + "equals(D_771528780_3_3,936573532)", + "equals(D_486574018_3_3,353358909)", + "equals(D_486574018_3_3,104430631)", + "valueIsOneOf('D_391951010_3_3',223216393,628445697,419220239,858244199)", + "equals(D_779052408_3_3,353358909)", + "equals(D_779052408_3_3,104430631)", + "equals(D_133297530_3_3,353358909)", + "equals(D_133297530_3_3,104430631)", + "greaterThanOrEqual(D_405571048,4)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,4)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,4)))", + "equals(D_391951010_4_4,628445697)", + "equals(D_391951010_4_4,419220239)", + "or(equals(D_391951010_4_4,223216393),equals(D_391951010_4_4,628445697))", + "equals(D_391951010_4_4,223216393)", + "equals(D_391951010_4_4,306890578)", + "equals(D_391951010_4_4,858244199)", + "equals(D_391951010_4_4,746038746)", + "valueIsOneOf('D_391951010_4_4',628445697,419220239)", + "equals(D_281494550_4_4,582602017)", + "equals(D_281494550_4_4,105727261)", + "equals(D_281494550_4_4,720288326)", + "valueIsOneOf('D_391951010_4_4',223216393,628445697,419220239)", + "equals(D_771528780_4_4,660308254)", + "equals(D_771528780_4_4,936573532)", + "equals(D_486574018_4_4,353358909)", + "equals(D_486574018_4_4,104430631)", + "valueIsOneOf('D_391951010_4_4',223216393,628445697,419220239,858244199)", + "equals(D_779052408_4_4,353358909)", + "equals(D_779052408_4_4,104430631)", + "equals(D_133297530_4_4,353358909)", + "equals(D_133297530_4_4,104430631)", + "greaterThanOrEqual(D_405571048,5)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,5)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,5)))", + "equals(D_391951010_5_5,628445697)", + "equals(D_391951010_5_5,419220239)", + "or(equals(D_391951010_5_5,223216393),equals(D_391951010_5_5,628445697))", + "equals(D_391951010_5_5,223216393)", + "equals(D_391951010_5_5,306890578)", + "equals(D_391951010_5_5,858244199)", + "equals(D_391951010_5_5,746038746)", + "valueIsOneOf('D_391951010_5_5',628445697,419220239)", + "equals(D_281494550_5_5,582602017)", + "equals(D_281494550_5_5,105727261)", + "equals(D_281494550_5_5,720288326)", + "valueIsOneOf('D_391951010_5_5',223216393,628445697,419220239)", + "equals(D_771528780_5_5,660308254)", + "equals(D_771528780_5_5,936573532)", + "equals(D_486574018_5_5,353358909)", + "equals(D_486574018_5_5,104430631)", + "valueIsOneOf('D_391951010_5_5',223216393,628445697,419220239,858244199)", + "equals(D_779052408_5_5,353358909)", + "equals(D_779052408_5_5,104430631)", + "equals(D_133297530_5_5,353358909)", + "equals(D_133297530_5_5,104430631)", + "greaterThanOrEqual(D_405571048,6)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,6)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,6)))", + "equals(D_391951010_6_6,628445697)", + "equals(D_391951010_6_6,419220239)", + "or(equals(D_391951010_6_6,223216393),equals(D_391951010_6_6,628445697))", + "equals(D_391951010_6_6,223216393)", + "equals(D_391951010_6_6,306890578)", + "equals(D_391951010_6_6,858244199)", + "equals(D_391951010_6_6,746038746)", + "valueIsOneOf('D_391951010_6_6',628445697,419220239)", + "equals(D_281494550_6_6,582602017)", + "equals(D_281494550_6_6,105727261)", + "equals(D_281494550_6_6,720288326)", + "valueIsOneOf('D_391951010_6_6',223216393,628445697,419220239)", + "equals(D_771528780_6_6,660308254)", + "equals(D_771528780_6_6,936573532)", + "equals(D_486574018_6_6,353358909)", + "equals(D_486574018_6_6,104430631)", + "valueIsOneOf('D_391951010_6_6',223216393,628445697,419220239,858244199)", + "equals(D_779052408_6_6,353358909)", + "equals(D_779052408_6_6,104430631)", + "equals(D_133297530_6_6,353358909)", + "equals(D_133297530_6_6,104430631)", + "greaterThanOrEqual(D_405571048,7)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,7)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,7)))", + "equals(D_391951010_7_7,628445697)", + "equals(D_391951010_7_7,419220239)", + "or(equals(D_391951010_7_7,223216393),equals(D_391951010_7_7,628445697))", + "equals(D_391951010_7_7,223216393)", + "equals(D_391951010_7_7,306890578)", + "equals(D_391951010_7_7,858244199)", + "equals(D_391951010_7_7,746038746)", + "valueIsOneOf('D_391951010_7_7',628445697,419220239)", + "equals(D_281494550_7_7,582602017)", + "equals(D_281494550_7_7,105727261)", + "equals(D_281494550_7_7,720288326)", + "valueIsOneOf('D_391951010_7_7',223216393,628445697,419220239)", + "equals(D_771528780_7_7,660308254)", + "equals(D_771528780_7_7,936573532)", + "equals(D_486574018_7_7,353358909)", + "equals(D_486574018_7_7,104430631)", + "valueIsOneOf('D_391951010_7_7',223216393,628445697,419220239,858244199)", + "equals(D_779052408_7_7,353358909)", + "equals(D_779052408_7_7,104430631)", + "equals(D_133297530_7_7,353358909)", + "equals(D_133297530_7_7,104430631)", + "greaterThanOrEqual(D_405571048,8)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,8)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,8)))", + "equals(D_391951010_8_8,628445697)", + "equals(D_391951010_8_8,419220239)", + "or(equals(D_391951010_8_8,223216393),equals(D_391951010_8_8,628445697))", + "equals(D_391951010_8_8,223216393)", + "equals(D_391951010_8_8,306890578)", + "equals(D_391951010_8_8,858244199)", + "equals(D_391951010_8_8,746038746)", + "valueIsOneOf('D_391951010_8_8',628445697,419220239)", + "equals(D_281494550_8_8,582602017)", + "equals(D_281494550_8_8,105727261)", + "equals(D_281494550_8_8,720288326)", + "valueIsOneOf('D_391951010_8_8',223216393,628445697,419220239)", + "equals(D_771528780_8_8,660308254)", + "equals(D_771528780_8_8,936573532)", + "equals(D_486574018_8_8,353358909)", + "equals(D_486574018_8_8,104430631)", + "valueIsOneOf('D_391951010_8_8',223216393,628445697,419220239,858244199)", + "equals(D_779052408_8_8,353358909)", + "equals(D_779052408_8_8,104430631)", + "equals(D_133297530_8_8,353358909)", + "equals(D_133297530_8_8,104430631)", + "greaterThanOrEqual(D_405571048,9)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,9)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,9)))", + "equals(D_391951010_9_9,628445697)", + "equals(D_391951010_9_9,419220239)", + "or(equals(D_391951010_9_9,223216393),equals(D_391951010_9_9,628445697))", + "equals(D_391951010_9_9,223216393)", + "equals(D_391951010_9_9,306890578)", + "equals(D_391951010_9_9,858244199)", + "equals(D_391951010_9_9,746038746)", + "valueIsOneOf('D_391951010_9_9',628445697,419220239)", + "equals(D_281494550_9_9,582602017)", + "equals(D_281494550_9_9,105727261)", + "equals(D_281494550_9_9,720288326)", + "valueIsOneOf('D_391951010_9_9',223216393,628445697,419220239)", + "equals(D_771528780_9_9,660308254)", + "equals(D_771528780_9_9,936573532)", + "equals(D_486574018_9_9,353358909)", + "equals(D_486574018_9_9,104430631)", + "valueIsOneOf('D_391951010_9_9',223216393,628445697,419220239,858244199)", + "equals(D_779052408_9_9,353358909)", + "equals(D_779052408_9_9,104430631)", + "equals(D_133297530_9_9,353358909)", + "equals(D_133297530_9_9,104430631)", + "greaterThanOrEqual(D_405571048,10)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,10)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,10)))", + "equals(D_391951010_10_10,628445697)", + "equals(D_391951010_10_10,419220239)", + "or(equals(D_391951010_10_10,223216393),equals(D_391951010_10_10,628445697))", + "equals(D_391951010_10_10,223216393)", + "equals(D_391951010_10_10,306890578)", + "equals(D_391951010_10_10,858244199)", + "equals(D_391951010_10_10,746038746)", + "valueIsOneOf('D_391951010_10_10',628445697,419220239)", + "equals(D_281494550_10_10,582602017)", + "equals(D_281494550_10_10,105727261)", + "equals(D_281494550_10_10,720288326)", + "valueIsOneOf('D_391951010_10_10',223216393,628445697,419220239)", + "equals(D_771528780_10_10,660308254)", + "equals(D_771528780_10_10,936573532)", + "equals(D_486574018_10_10,353358909)", + "equals(D_486574018_10_10,104430631)", + "valueIsOneOf('D_391951010_10_10',223216393,628445697,419220239,858244199)", + "equals(D_779052408_10_10,353358909)", + "equals(D_779052408_10_10,104430631)", + "equals(D_133297530_10_10,353358909)", + "equals(D_133297530_10_10,104430631)", + "greaterThanOrEqual(D_405571048,11)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,11)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,11)))", + "equals(D_391951010_11_11,628445697)", + "equals(D_391951010_11_11,419220239)", + "or(equals(D_391951010_11_11,223216393),equals(D_391951010_11_11,628445697))", + "equals(D_391951010_11_11,223216393)", + "equals(D_391951010_11_11,306890578)", + "equals(D_391951010_11_11,858244199)", + "equals(D_391951010_11_11,746038746)", + "valueIsOneOf('D_391951010_11_11',628445697,419220239)", + "equals(D_281494550_11_11,582602017)", + "equals(D_281494550_11_11,105727261)", + "equals(D_281494550_11_11,720288326)", + "valueIsOneOf('D_391951010_11_11',223216393,628445697,419220239)", + "equals(D_771528780_11_11,660308254)", + "equals(D_771528780_11_11,936573532)", + "equals(D_486574018_11_11,353358909)", + "equals(D_486574018_11_11,104430631)", + "valueIsOneOf('D_391951010_11_11',223216393,628445697,419220239,858244199)", + "equals(D_779052408_11_11,353358909)", + "equals(D_779052408_11_11,104430631)", + "equals(D_133297530_11_11,353358909)", + "equals(D_133297530_11_11,104430631)", + "greaterThanOrEqual(D_405571048,12)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,12)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,12)))", + "equals(D_391951010_12_12,628445697)", + "equals(D_391951010_12_12,419220239)", + "or(equals(D_391951010_12_12,223216393),equals(D_391951010_12_12,628445697))", + "equals(D_391951010_12_12,223216393)", + "equals(D_391951010_12_12,306890578)", + "equals(D_391951010_12_12,858244199)", + "equals(D_391951010_12_12,746038746)", + "valueIsOneOf('D_391951010_12_12',628445697,419220239)", + "equals(D_281494550_12_12,582602017)", + "equals(D_281494550_12_12,105727261)", + "equals(D_281494550_12_12,720288326)", + "valueIsOneOf('D_391951010_12_12',223216393,628445697,419220239)", + "equals(D_771528780_12_12,660308254)", + "equals(D_771528780_12_12,936573532)", + "equals(D_486574018_12_12,353358909)", + "equals(D_486574018_12_12,104430631)", + "valueIsOneOf('D_391951010_12_12',223216393,628445697,419220239,858244199)", + "equals(D_779052408_12_12,353358909)", + "equals(D_779052408_12_12,104430631)", + "equals(D_133297530_12_12,353358909)", + "equals(D_133297530_12_12,104430631)", + "greaterThanOrEqual(D_405571048,13)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,13)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,13)))", + "equals(D_391951010_13_13,628445697)", + "equals(D_391951010_13_13,419220239)", + "or(equals(D_391951010_13_13,223216393),equals(D_391951010_13_13,628445697))", + "equals(D_391951010_13_13,223216393)", + "equals(D_391951010_13_13,306890578)", + "equals(D_391951010_13_13,858244199)", + "equals(D_391951010_13_13,746038746)", + "valueIsOneOf('D_391951010_13_13',628445697,419220239)", + "equals(D_281494550_13_13,582602017)", + "equals(D_281494550_13_13,105727261)", + "equals(D_281494550_13_13,720288326)", + "valueIsOneOf('D_391951010_13_13',223216393,628445697,419220239)", + "equals(D_771528780_13_13,660308254)", + "equals(D_771528780_13_13,936573532)", + "equals(D_486574018_13_13,353358909)", + "equals(D_486574018_13_13,104430631)", + "valueIsOneOf('D_391951010_13_13',223216393,628445697,419220239,858244199)", + "equals(D_779052408_13_13,353358909)", + "equals(D_779052408_13_13,104430631)", + "equals(D_133297530_13_13,353358909)", + "equals(D_133297530_13_13,104430631)", + "greaterThanOrEqual(D_405571048,14)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,14)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,14)))", + "equals(D_391951010_14_14,628445697)", + "equals(D_391951010_14_14,419220239)", + "or(equals(D_391951010_14_14,223216393),equals(D_391951010_14_14,628445697))", + "equals(D_391951010_14_14,223216393)", + "equals(D_391951010_14_14,306890578)", + "equals(D_391951010_14_14,858244199)", + "equals(D_391951010_14_14,746038746)", + "valueIsOneOf('D_391951010_14_14',628445697,419220239)", + "equals(D_281494550_14_14,582602017)", + "equals(D_281494550_14_14,105727261)", + "equals(D_281494550_14_14,720288326)", + "valueIsOneOf('D_391951010_14_14',223216393,628445697,419220239)", + "equals(D_771528780_14_14,660308254)", + "equals(D_771528780_14_14,936573532)", + "equals(D_486574018_14_14,353358909)", + "equals(D_486574018_14_14,104430631)", + "valueIsOneOf('D_391951010_14_14',223216393,628445697,419220239,858244199)", + "equals(D_779052408_14_14,353358909)", + "equals(D_779052408_14_14,104430631)", + "equals(D_133297530_14_14,353358909)", + "equals(D_133297530_14_14,104430631)", + "greaterThanOrEqual(D_405571048,15)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,15)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,15)))", + "equals(D_391951010_15_15,628445697)", + "equals(D_391951010_15_15,419220239)", + "or(equals(D_391951010_15_15,223216393),equals(D_391951010_15_15,628445697))", + "equals(D_391951010_15_15,223216393)", + "equals(D_391951010_15_15,306890578)", + "equals(D_391951010_15_15,858244199)", + "equals(D_391951010_15_15,746038746)", + "valueIsOneOf('D_391951010_15_15',628445697,419220239)", + "equals(D_281494550_15_15,582602017)", + "equals(D_281494550_15_15,105727261)", + "equals(D_281494550_15_15,720288326)", + "valueIsOneOf('D_391951010_15_15',223216393,628445697,419220239)", + "equals(D_771528780_15_15,660308254)", + "equals(D_771528780_15_15,936573532)", + "equals(D_486574018_15_15,353358909)", + "equals(D_486574018_15_15,104430631)", + "valueIsOneOf('D_391951010_15_15',223216393,628445697,419220239,858244199)", + "equals(D_779052408_15_15,353358909)", + "equals(D_779052408_15_15,104430631)", + "equals(D_133297530_15_15,353358909)", + "equals(D_133297530_15_15,104430631)", + "greaterThanOrEqual(D_405571048,16)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,16)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,16)))", + "equals(D_391951010_16_16,628445697)", + "equals(D_391951010_16_16,419220239)", + "or(equals(D_391951010_16_16,223216393),equals(D_391951010_16_16,628445697))", + "equals(D_391951010_16_16,223216393)", + "equals(D_391951010_16_16,306890578)", + "equals(D_391951010_16_16,858244199)", + "equals(D_391951010_16_16,746038746)", + "valueIsOneOf('D_391951010_16_16',628445697,419220239)", + "equals(D_281494550_16_16,582602017)", + "equals(D_281494550_16_16,105727261)", + "equals(D_281494550_16_16,720288326)", + "valueIsOneOf('D_391951010_16_16',223216393,628445697,419220239)", + "equals(D_771528780_16_16,660308254)", + "equals(D_771528780_16_16,936573532)", + "equals(D_486574018_16_16,353358909)", + "equals(D_486574018_16_16,104430631)", + "valueIsOneOf('D_391951010_16_16',223216393,628445697,419220239,858244199)", + "equals(D_779052408_16_16,353358909)", + "equals(D_779052408_16_16,104430631)", + "equals(D_133297530_16_16,353358909)", + "equals(D_133297530_16_16,104430631)", + "greaterThanOrEqual(D_405571048,17)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,17)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,17)))", + "equals(D_391951010_17_17,628445697)", + "equals(D_391951010_17_17,419220239)", + "or(equals(D_391951010_17_17,223216393),equals(D_391951010_17_17,628445697))", + "equals(D_391951010_17_17,223216393)", + "equals(D_391951010_17_17,306890578)", + "equals(D_391951010_17_17,858244199)", + "equals(D_391951010_17_17,746038746)", + "valueIsOneOf('D_391951010_17_17',628445697,419220239)", + "equals(D_281494550_17_17,582602017)", + "equals(D_281494550_17_17,105727261)", + "equals(D_281494550_17_17,720288326)", + "valueIsOneOf('D_391951010_17_17',223216393,628445697,419220239)", + "equals(D_771528780_17_17,660308254)", + "equals(D_771528780_17_17,936573532)", + "equals(D_486574018_17_17,353358909)", + "equals(D_486574018_17_17,104430631)", + "valueIsOneOf('D_391951010_17_17',223216393,628445697,419220239,858244199)", + "equals(D_779052408_17_17,353358909)", + "equals(D_779052408_17_17,104430631)", + "equals(D_133297530_17_17,353358909)", + "equals(D_133297530_17_17,104430631)", + "greaterThanOrEqual(D_405571048,18)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,18)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,18)))", + "equals(D_391951010_18_18,628445697)", + "equals(D_391951010_18_18,419220239)", + "or(equals(D_391951010_18_18,223216393),equals(D_391951010_18_18,628445697))", + "equals(D_391951010_18_18,223216393)", + "equals(D_391951010_18_18,306890578)", + "equals(D_391951010_18_18,858244199)", + "equals(D_391951010_18_18,746038746)", + "valueIsOneOf('D_391951010_18_18',628445697,419220239)", + "equals(D_281494550_18_18,582602017)", + "equals(D_281494550_18_18,105727261)", + "equals(D_281494550_18_18,720288326)", + "valueIsOneOf('D_391951010_18_18',223216393,628445697,419220239)", + "equals(D_771528780_18_18,660308254)", + "equals(D_771528780_18_18,936573532)", + "equals(D_486574018_18_18,353358909)", + "equals(D_486574018_18_18,104430631)", + "valueIsOneOf('D_391951010_18_18',223216393,628445697,419220239,858244199)", + "equals(D_779052408_18_18,353358909)", + "equals(D_779052408_18_18,104430631)", + "equals(D_133297530_18_18,353358909)", + "equals(D_133297530_18_18,104430631)", + "greaterThanOrEqual(D_405571048,19)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,19)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,19)))", + "equals(D_391951010_19_19,628445697)", + "equals(D_391951010_19_19,419220239)", + "or(equals(D_391951010_19_19,223216393),equals(D_391951010_19_19,628445697))", + "equals(D_391951010_19_19,223216393)", + "equals(D_391951010_19_19,306890578)", + "equals(D_391951010_19_19,858244199)", + "equals(D_391951010_19_19,746038746)", + "valueIsOneOf('D_391951010_19_19',628445697,419220239)", + "equals(D_281494550_19_19,582602017)", + "equals(D_281494550_19_19,105727261)", + "equals(D_281494550_19_19,720288326)", + "valueIsOneOf('D_391951010_19_19',223216393,628445697,419220239)", + "equals(D_771528780_19_19,660308254)", + "equals(D_771528780_19_19,936573532)", + "equals(D_486574018_19_19,353358909)", + "equals(D_486574018_19_19,104430631)", + "valueIsOneOf('D_391951010_19_19',223216393,628445697,419220239,858244199)", + "equals(D_779052408_19_19,353358909)", + "equals(D_779052408_19_19,104430631)", + "equals(D_133297530_19_19,353358909)", + "equals(D_133297530_19_19,104430631)", + "greaterThanOrEqual(D_405571048,20)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,20)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,20)))", + "equals(D_391951010_20_20,628445697)", + "equals(D_391951010_20_20,419220239)", + "or(equals(D_391951010_20_20,223216393),equals(D_391951010_20_20,628445697))", + "equals(D_391951010_20_20,223216393)", + "equals(D_391951010_20_20,306890578)", + "equals(D_391951010_20_20,858244199)", + "equals(D_391951010_20_20,746038746)", + "valueIsOneOf('D_391951010_20_20',628445697,419220239)", + "equals(D_281494550_20_20,582602017)", + "equals(D_281494550_20_20,105727261)", + "equals(D_281494550_20_20,720288326)", + "valueIsOneOf('D_391951010_20_20',223216393,628445697,419220239)", + "equals(D_771528780_20_20,660308254)", + "equals(D_771528780_20_20,936573532)", + "equals(D_486574018_20_20,353358909)", + "equals(D_486574018_20_20,104430631)", + "valueIsOneOf('D_391951010_20_20',223216393,628445697,419220239,858244199)", + "equals(D_779052408_20_20,353358909)", + "equals(D_779052408_20_20,104430631)", + "equals(D_133297530_20_20,353358909)", + "equals(D_133297530_20_20,104430631)", + "greaterThanOrEqual(D_405571048,21)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,21)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,21)))", + "equals(D_391951010_21_21,628445697)", + "equals(D_391951010_21_21,419220239)", + "or(equals(D_391951010_21_21,223216393),equals(D_391951010_21_21,628445697))", + "equals(D_391951010_21_21,223216393)", + "equals(D_391951010_21_21,306890578)", + "equals(D_391951010_21_21,858244199)", + "equals(D_391951010_21_21,746038746)", + "valueIsOneOf('D_391951010_21_21',628445697,419220239)", + "equals(D_281494550_21_21,582602017)", + "equals(D_281494550_21_21,105727261)", + "equals(D_281494550_21_21,720288326)", + "valueIsOneOf('D_391951010_21_21',223216393,628445697,419220239)", + "equals(D_771528780_21_21,660308254)", + "equals(D_771528780_21_21,936573532)", + "equals(D_486574018_21_21,353358909)", + "equals(D_486574018_21_21,104430631)", + "valueIsOneOf('D_391951010_21_21',223216393,628445697,419220239,858244199)", + "equals(D_779052408_21_21,353358909)", + "equals(D_779052408_21_21,104430631)", + "equals(D_133297530_21_21,353358909)", + "equals(D_133297530_21_21,104430631)", + "greaterThanOrEqual(D_405571048,22)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,22)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,22)))", + "equals(D_391951010_22_22,628445697)", + "equals(D_391951010_22_22,419220239)", + "or(equals(D_391951010_22_22,223216393),equals(D_391951010_22_22,628445697))", + "equals(D_391951010_22_22,223216393)", + "equals(D_391951010_22_22,306890578)", + "equals(D_391951010_22_22,858244199)", + "equals(D_391951010_22_22,746038746)", + "valueIsOneOf('D_391951010_22_22',628445697,419220239)", + "equals(D_281494550_22_22,582602017)", + "equals(D_281494550_22_22,105727261)", + "equals(D_281494550_22_22,720288326)", + "valueIsOneOf('D_391951010_22_22',223216393,628445697,419220239)", + "equals(D_771528780_22_22,660308254)", + "equals(D_771528780_22_22,936573532)", + "equals(D_486574018_22_22,353358909)", + "equals(D_486574018_22_22,104430631)", + "valueIsOneOf('D_391951010_22_22',223216393,628445697,419220239,858244199)", + "equals(D_779052408_22_22,353358909)", + "equals(D_779052408_22_22,104430631)", + "equals(D_133297530_22_22,353358909)", + "equals(D_133297530_22_22,104430631)", + "greaterThanOrEqual(D_405571048,23)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,23)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,23)))", + "equals(D_391951010_23_23,628445697)", + "equals(D_391951010_23_23,419220239)", + "or(equals(D_391951010_23_23,223216393),equals(D_391951010_23_23,628445697))", + "equals(D_391951010_23_23,223216393)", + "equals(D_391951010_23_23,306890578)", + "equals(D_391951010_23_23,858244199)", + "equals(D_391951010_23_23,746038746)", + "valueIsOneOf('D_391951010_23_23',628445697,419220239)", + "equals(D_281494550_23_23,582602017)", + "equals(D_281494550_23_23,105727261)", + "equals(D_281494550_23_23,720288326)", + "valueIsOneOf('D_391951010_23_23',223216393,628445697,419220239)", + "equals(D_771528780_23_23,660308254)", + "equals(D_771528780_23_23,936573532)", + "equals(D_486574018_23_23,353358909)", + "equals(D_486574018_23_23,104430631)", + "valueIsOneOf('D_391951010_23_23',223216393,628445697,419220239,858244199)", + "equals(D_779052408_23_23,353358909)", + "equals(D_779052408_23_23,104430631)", + "equals(D_133297530_23_23,353358909)", + "equals(D_133297530_23_23,104430631)", + "greaterThanOrEqual(D_405571048,24)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,24)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,24)))", + "equals(D_391951010_24_24,628445697)", + "equals(D_391951010_24_24,419220239)", + "or(equals(D_391951010_24_24,223216393),equals(D_391951010_24_24,628445697))", + "equals(D_391951010_24_24,223216393)", + "equals(D_391951010_24_24,306890578)", + "equals(D_391951010_24_24,858244199)", + "equals(D_391951010_24_24,746038746)", + "valueIsOneOf('D_391951010_24_24',628445697,419220239)", + "equals(D_281494550_24_24,582602017)", + "equals(D_281494550_24_24,105727261)", + "equals(D_281494550_24_24,720288326)", + "valueIsOneOf('D_391951010_24_24',223216393,628445697,419220239)", + "equals(D_771528780_24_24,660308254)", + "equals(D_771528780_24_24,936573532)", + "equals(D_486574018_24_24,353358909)", + "equals(D_486574018_24_24,104430631)", + "valueIsOneOf('D_391951010_24_24',223216393,628445697,419220239,858244199)", + "equals(D_779052408_24_24,353358909)", + "equals(D_779052408_24_24,104430631)", + "equals(D_133297530_24_24,353358909)", + "equals(D_133297530_24_24,104430631)", + "greaterThanOrEqual(D_405571048,25)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,25)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,25)))", + "equals(D_391951010_25_25,628445697)", + "equals(D_391951010_25_25,419220239)", + "or(equals(D_391951010_25_25,223216393),equals(D_391951010_25_25,628445697))", + "equals(D_391951010_25_25,223216393)", + "equals(D_391951010_25_25,306890578)", + "equals(D_391951010_25_25,858244199)", + "equals(D_391951010_25_25,746038746)", + "valueIsOneOf('D_391951010_25_25',628445697,419220239)", + "equals(D_281494550_25_25,582602017)", + "equals(D_281494550_25_25,105727261)", + "equals(D_281494550_25_25,720288326)", + "valueIsOneOf('D_391951010_25_25',223216393,628445697,419220239)", + "equals(D_771528780_25_25,660308254)", + "equals(D_771528780_25_25,936573532)", + "equals(D_486574018_25_25,353358909)", + "equals(D_486574018_25_25,104430631)", + "valueIsOneOf('D_391951010_25_25',223216393,628445697,419220239,858244199)", + "equals(D_779052408_25_25,353358909)", + "equals(D_779052408_25_25,104430631)", + "equals(D_133297530_25_25,353358909)", + "equals(D_133297530_25_25,104430631)", + "exists('D_762700622')", + "doesNotExist('D_762700622')", + "equals(D_668834883,246843973)", + "equals(D_668834883,854184254)", + "equals(D_668834883,515434780)", + "equals(D_668834883,674148137)", + "valueIsOneOf(\"D_668834883\",807835037) or valueLength(\"D_640559281\")>0", + "valueLength('D_640559281')>0", + "valueLength('D_640559281')==0", + "equals(D_800943768,687050279)", + "valueIsOneOf(\"D_800943768\",807835037) or valueLength(\"D_235516216\")>0", + "valueLength('D_235516216')>0", + "valueLength('D_235516216')==0", + "equals(D_263785082,837393880)", + "equals(D_263785082,944874693)", + "valueIsOneOf(\"D_263785082\",807835037) or valueLength(\"D_542108835\")>0", + "valueLength('D_542108835')>0", + "valueLength('D_542108835')==0", + "or(equals(D_946849196,729863969),or(equals(D_946849196,108104748),or(equals(D_946849196,717308596),or(equals(D_946849196,746788766),or(equals(D_946849196,158214723),doesNotEqual(D_946849196,658810736))))))", + "exists('D_557526470')", + "doesNotExist('D_557526470')", + "equals(D_613744428,353358909)", + "valueEquals(\"D_613744428\",353358909)", + "equals(\"D_613744428\",353358909)", + "someSelected(\"D_980120253_1\",\"D_980120253_2\",\"D_980120253_3\",\"D_980120253_4\",\"D_980120253_5\",\"D_980120253_6\",\"D_993029890_1\",\"D_993029890_2\",\"D_993029890_3\",\"D_993029890_4\",\"D_993029890_5\",\"D_993029890_6\",\"D_980196073_1\",\"D_980196073_2\",\"D_980196073_3\",\"D_980196073_4\",\"D_980196073_5\",\"D_980196073_6\",\"D_115422925_1\",\"D_115422925_2\",\"D_115422925_3\",\"D_115422925_4\",\"D_115422925_5\",\"D_115422925_6\",\"D_151161693_1\",\"D_151161693_2\",\"D_151161693_3\",\"D_151161693_4\",\"D_151161693_5\",\"D_151161693_6\")", + "someSelected(%22D_980120253_1%22%2C%22D_980120253_2%22%2C%22D_980120253_3%22%2C%22D_980120253_4%22%2C%22D_980120253_5%22%2C%22D_980120253_6%22)", + "someSelected(%22D_993029890_1%22%2C%22D_993029890_2%22%2C%22D_993029890_3%22%2C%22D_993029890_4%22%2C%22D_993029890_5%22%2C%22D_993029890_6%22)", + "someSelected(%22D_980196073_1%22%2C%22D_980196073_2%22%2C%22D_980196073_3%22%2C%22D_980196073_4%22%2C%22D_980196073_5%22%2C%22D_980196073_6%22)", + "someSelected(%22D_115422925_1%22%2C%22D_115422925_2%22%2C%22D_115422925_3%22%2C%22D_115422925_4%22%2C%22D_115422925_5%22%2C%22D_115422925_6%22)", + "someSelected(%22D_151161693_1%22%2C%22D_151161693_2%22%2C%22D_151161693_3%22%2C%22D_151161693_4%22%2C%22D_151161693_5%22%2C%22D_151161693_6%22)", + "equals(D_204421360,797221287)", + "doesNotEqual(numberOfChoicesSelected(D_442059084,0),1)", + "equals(D_204421360,500744195)", + "doesNotEqual(numberOfChoicesSelected(D_829749579,0),1)", + "equals(D_204421360,383015037)", + "doesNotEqual(numberOfChoicesSelected(D_618482103,0),1)", + "equals(D_517976064,904954920)", + "doesNotEqual(numberOfChoicesSelected(D_894610280,0),1)", + "equals(D_517976064,619501806)", + "doesNotEqual(numberOfChoicesSelected(D_222110888,0),1)", + "equals(D_517976064,203192394)", + "doesNotEqual(numberOfChoicesSelected(D_564242877,0),1)", + "equals(D_517976064,261267696)", + "doesNotEqual(numberOfChoicesSelected(D_635874413,0),1)", + "equals(D_517976064,926584500)", + "doesNotEqual(numberOfChoicesSelected(D_371748514,0),1)", + "equals(D_517976064,420058896)", + "doesNotEqual(numberOfChoicesSelected(D_858525957,0),1)", + "equals(D_517976064,868685663)", + "doesNotEqual(numberOfChoicesSelected(D_787591805,0),1)", + "equals(D_517976064,760484278)", + "doesNotEqual(numberOfChoicesSelected(D_900299856,0),1)", + "equals(D_517976064,345916806)", + "doesNotEqual(numberOfChoicesSelected(D_149884127,0),1)", + "equals(D_517976064,936042582)", + "doesNotEqual(numberOfChoicesSelected(D_845164425,0),1)", + "equals(D_517976064,182827107)", + "doesNotEqual(numberOfChoicesSelected(D_187772368,0),1)", + "equals(D_517976064,734860227)", + "doesNotEqual(numberOfChoicesSelected(D_815229596,0),1)", + "equals(D_517976064,371531887)", + "doesNotEqual(numberOfChoicesSelected(D_262305264,0),1)", + "equals(D_517976064,423631576)", + "doesNotEqual(numberOfChoicesSelected(D_409324592,0),1)", + "equals(D_517976064,181769837)", + "doesNotEqual(numberOfChoicesSelected(D_895837106,0),1)", + "equals(D_591723682,353358909)", + "doesNotEqual(D_591723682,353358909)", + "equals(D_479628567,370923702)", + "equals(D_674976924,958538953)", + "equals(D_674976924,274062548)" + ], + "sitesByScope": { + "grid-inline": 3, + "grid-row": 5, + "inline": 990, + "question": 362, + "response": 7 + }, + "sitesByAttribute": { + "data-displayif": 5, + "displayif": 1362 + } + }, + "grids": [ + { + "questionId": "D_392658845", + "questionIndex": 452, + "rowQuestionIds": [ + "D_699101535", + "D_652561589", + "D_589522790", + "D_239572239" + ], + "rowCount": 4, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "503218834", + "464753847", + "729681071", + "258023209", + "638092100", + "628177728", + "919739344", + "755558825", + "949555271", + "201002865" + ] + }, + { + "questionId": "D_649352910", + "questionIndex": 454, + "rowQuestionIds": [ + "D_654385712", + "D_263483736", + "D_806746224", + "D_396649512" + ], + "rowCount": 4, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "503218834", + "464753847", + "729681071", + "258023209", + "638092100", + "628177728", + "919739344", + "755558825", + "949555271", + "201002865" + ] + }, + { + "questionId": "D_733547268", + "questionIndex": 456, + "rowQuestionIds": [ + "D_980120253", + "D_993029890", + "D_980196073", + "D_115422925", + "D_151161693" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "648960871", + "239152340", + "582006876", + "645894551", + "996315715", + "671267928", + "647504893" + ] + }, + { + "questionId": "D_128705365", + "questionIndex": 457, + "rowQuestionIds": [ + "D_607323377", + "D_491484323", + "D_588637585", + "D_199039940", + "D_986476579" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "428999623", + "248303092", + "206020811", + "264163865", + "638092100", + "628177728", + "805918496" + ] + }, + { + "questionId": "D_421859821", + "questionIndex": 536, + "rowQuestionIds": [ + "D_220238240", + "D_151006826", + "D_965290070", + "D_781115321", + "D_453071098", + "D_513065503", + "D_257137378" + ], + "rowCount": 7, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "104430631", + "525779785", + "565036180", + "284343405", + "270994579" + ] + }, + { + "questionId": "D_981441822", + "questionIndex": 538, + "rowQuestionIds": [ + "D_403155173", + "D_576621769", + "D_988508028", + "D_186488870", + "D_922388461", + "D_760686611", + "D_354550061", + "D_179705366", + "D_955609858" + ], + "rowCount": 9, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "514068832", + "774439579", + "747099514", + "977681388" + ] + } + ], + "loops": [ + { + "loopIndex": "1", + "loopMaxQuestionIds": [ + "D_405571048" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 104, + 113, + 122, + 131, + 140, + 149, + 158, + 167, + 176, + 185, + 194, + 203, + 212, + 221, + 230, + 239, + 248, + 257, + 266, + 275, + 284, + 293, + 302, + 311, + 320 + ], + "boundaryIndex": 329 + } + ], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 359, + "processorQuestionCount": 554, + "processedQuestionCount": 554, + "renderedFormCount": 554, + "controlCount": 3460, + "responseControlCount": 1600, + "explicitTransitionCount": 558, + "sequentialAdjacencyCount": 553, + "resolvedExplicitTransitionCount": 558, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1367, + "gridQuestionCount": 6, + "gridRowCount": 34, + "loopStartCount": 25, + "loopDefinitionCount": 1, + "loopExpandedQuestionCount": 225, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 654 + } + }, + { + "schemaVersion": 1, + "module": "module2024ConnectExperience", + "locale": "en", + "language": "en", + "path": "prod/module2024ConnectExperience.txt", + "sha256": "70f70eb07acec537f634c96b66c29596e68baee11812f367bfc89317cb818fe7", + "questName": "D_506648060", + "version": "1.1", + "authoredMarkerCount": 43, + "runtimeQuestionIds": [ + "SRVPES_PESINTRO_V1R0", + "D_145727599?", + "D_470013848?", + "D_731524314?", + "D_403175318?", + "D_260186214?", + "D_210120853?", + "D_875017278?", + "D_630940888?", + "D_575160226?", + "D_646060480?", + "D_579939641?", + "D_549970786?", + "SRVPES_SECTION2_V1R0", + "D_124830305?", + "D_972944307?", + "D_394328384?", + "SRVPES_SECTION3_V1R0", + "D_586132480?", + "D_886084185?", + "D_945546878?", + "D_363878103?", + "SRVPES_SECTION4_V1R0", + "D_472709337?", + "D_890945599?", + "D_465287908?", + "D_956625094?", + "D_476960744?", + "D_355080680?", + "D_307813936?", + "D_800057241?", + "D_649713579?", + "D_943119849?", + "D_496748977?", + "D_482763096?", + "SRVPES_SECTION5_V1R0", + "D_176469609?", + "D_210983898?", + "D_228922812?", + "SRVPES_WHYINTRO_V1R0", + "D_960544981?", + "D_674994176?", + "END" + ], + "responseControlsByType": { + "checkbox": 49, + "radio": 83, + "text": 15 + }, + "explicitTransitions": { + "targets": [ + "D_210120853", + "D_646060480", + "D_575160226", + "D_579939641", + "D_549970786", + "D_945546878", + "D_465287908", + "D_943119849", + "D_496748977" + ], + "byKind": { + "no-response": 6, + "response": 10 + }, + "byResolution": { + "exact": 16 + }, + "triggerTypes": { + "hidden": 6, + "radio": 10 + }, + "triggerValues": [ + "104430631", + "353358909", + "198030665", + "178420302" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_145727599,386252749)", + "equals(D_145727599,153962804)", + "equals(D_145727599,188067494)", + "selectionCount(\"D_470013848\") + selectionCount(\"D_731524314\") + selectionCount(\"D_403175318\")>1", + "equals(D_470013848,482753957)", + "equals(D_470013848,358413399)", + "equals(D_470013848,807835037)", + "doesNotExist('D_495052121')", + "equals(D_731524314,515798638)", + "equals(D_731524314,132115595)", + "equals(D_731524314,299722216)", + "equals(D_731524314,115959973)", + "equals(D_731524314,238237869)", + "equals(D_731524314,985034149)", + "equals(D_731524314,807835037)", + "doesNotExist('D_638847244')", + "equals(D_403175318,798682161)", + "equals(D_403175318,554920493)", + "equals(D_403175318,200962909)", + "equals(D_403175318,807835037)", + "doesNotExist('D_507471937')", + "equals(D_630940888,353358909)", + "equals(D_646060480,104430631)", + "or(equals(D_586132480,333628672),equals(D_586132480,687057737))", + "equals(D_472709337,353358909)", + "equals(D_307813936,353358909)", + "equals(D_307813936,104430631)" + ], + "sitesByScope": { + "inline": 3, + "question": 11, + "response": 14 + }, + "sitesByAttribute": { + "displayif": 28 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 43, + "processorQuestionCount": 43, + "processedQuestionCount": 43, + "renderedFormCount": 43, + "controlCount": 274, + "responseControlCount": 147, + "explicitTransitionCount": 16, + "sequentialAdjacencyCount": 42, + "resolvedExplicitTransitionCount": 16, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 28, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 27 + } + }, + { + "schemaVersion": 1, + "module": "module2024ConnectExperience", + "locale": "es", + "language": "es", + "path": "prod/module2024ConnectExperienceSpanish.txt", + "sha256": "1bb9757b35913beca279af01bb99ee9c776684fbf7d056289f71c898e5cfef9f", + "questName": "D_506648060", + "version": "1.1", + "authoredMarkerCount": 43, + "runtimeQuestionIds": [ + "SRVPES_PESINTRO_V1R0", + "D_145727599?", + "D_470013848?", + "D_731524314?", + "D_403175318?", + "D_260186214?", + "D_210120853?", + "D_875017278?", + "D_630940888?", + "D_575160226?", + "D_646060480?", + "D_579939641?", + "D_549970786?", + "SRVPES_SECTION2_V1R0", + "D_124830305?", + "D_972944307?", + "D_394328384?", + "SRVPES_SECTION3_V1R0", + "D_586132480?", + "D_886084185?", + "D_945546878?", + "D_363878103?", + "SRVPES_SECTION4_V1R0", + "D_472709337?", + "D_890945599?", + "D_465287908?", + "D_956625094?", + "D_476960744?", + "D_355080680?", + "D_307813936?", + "D_800057241?", + "D_649713579?", + "D_943119849?", + "D_496748977?", + "D_482763096?", + "SRVPES_SECTION5_V1R0", + "D_176469609?", + "D_210983898?", + "D_228922812?", + "SRVPES_WHYINTRO_V1R0", + "D_960544981?", + "D_674994176?", + "END" + ], + "responseControlsByType": { + "checkbox": 49, + "radio": 83, + "text": 15 + }, + "explicitTransitions": { + "targets": [ + "D_210120853", + "D_646060480", + "D_575160226", + "D_579939641", + "D_549970786", + "D_945546878", + "D_465287908", + "D_943119849", + "D_496748977" + ], + "byKind": { + "no-response": 6, + "response": 10 + }, + "byResolution": { + "exact": 16 + }, + "triggerTypes": { + "hidden": 6, + "radio": 10 + }, + "triggerValues": [ + "104430631", + "353358909", + "198030665", + "178420302" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_145727599,386252749)", + "equals(D_145727599,153962804)", + "equals(D_145727599,188067494)", + "selectionCount(\"D_470013848\") + selectionCount(\"D_731524314\") + selectionCount(\"D_403175318\")>1", + "equals(D_470013848,482753957)", + "equals(D_470013848,358413399)", + "equals(D_470013848,807835037)", + "doesNotExist('D_495052121')", + "equals(D_731524314,515798638)", + "equals(D_731524314,132115595)", + "equals(D_731524314,299722216)", + "equals(D_731524314,115959973)", + "equals(D_731524314,238237869)", + "equals(D_731524314,985034149)", + "equals(D_731524314,807835037)", + "doesNotExist('D_638847244')", + "equals(D_403175318,798682161)", + "equals(D_403175318,554920493)", + "equals(D_403175318,200962909)", + "equals(D_403175318,807835037)", + "doesNotExist('D_507471937')", + "equals(D_630940888,353358909)", + "equals(D_646060480,104430631)", + "or(equals(D_586132480,333628672),equals(D_586132480,687057737))", + "equals(D_472709337,353358909)", + "equals(D_307813936,353358909)", + "equals(D_307813936,104430631)" + ], + "sitesByScope": { + "inline": 3, + "question": 11, + "response": 14 + }, + "sitesByAttribute": { + "displayif": 28 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 43, + "processorQuestionCount": 43, + "processedQuestionCount": 43, + "renderedFormCount": 43, + "controlCount": 274, + "responseControlCount": 147, + "explicitTransitionCount": 16, + "sequentialAdjacencyCount": 42, + "resolvedExplicitTransitionCount": 16, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 28, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 27 + } + }, + { + "schemaVersion": 1, + "module": "module2026ROIPreferences", + "locale": "en", + "language": "en", + "path": "prod/module2026ROIPreferences.txt", + "sha256": "bb14766a8d7fd626d2234254db78c1c7e84b0503f4734ddafa31239763b160a9", + "questName": "D_312845734", + "version": "1.0", + "authoredMarkerCount": 16, + "runtimeQuestionIds": [ + "INTROPREF", + "INTROGEO", + "D_144761753?", + "D_769359476?", + "INTROINDIVRISK", + "D_863590289?", + "INTROGENETICS", + "D_136941196?", + "INTRORSRCH", + "D_913318697?", + "INTRORSRCHDISC", + "D_486040313?", + "INTRO2RSRCHDISC", + "D_151535519?", + "D_395168461?", + "END" + ], + "responseControlsByType": { + "checkbox": 8, + "radio": 70, + "textarea": 1 + }, + "explicitTransitions": { + "targets": [], + "byKind": {}, + "byResolution": {}, + "triggerTypes": {}, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 16, + "processorQuestionCount": 16, + "processedQuestionCount": 16, + "renderedFormCount": 16, + "controlCount": 118, + "responseControlCount": 79, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 15, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + }, + { + "schemaVersion": 1, + "module": "module2026ROIPreferences", + "locale": "es", + "language": "es", + "path": "prod/module2026ROIPreferencesSpanish.txt", + "sha256": "c31cf93e57d0c26fb630b940d906cce1f42440e434dea4049ca46859a8423227", + "questName": "D_312845734", + "version": "1.0", + "authoredMarkerCount": 16, + "runtimeQuestionIds": [ + "INTROPREF", + "INTROGEO", + "D_144761753?", + "D_769359476?", + "INTROINDIVRISK", + "D_863590289?", + "INTROGENETICS", + "D_136941196?", + "INTRORSRCH", + "D_913318697?", + "INTRORSRCHDISC", + "D_486040313?", + "INTRO2RSRCHDISC", + "D_151535519?", + "D_395168461?", + "END" + ], + "responseControlsByType": { + "checkbox": 8, + "radio": 70, + "textarea": 1 + }, + "explicitTransitions": { + "targets": [], + "byKind": {}, + "byResolution": {}, + "triggerTypes": {}, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 16, + "processorQuestionCount": 16, + "processedQuestionCount": 16, + "renderedFormCount": 16, + "controlCount": 117, + "responseControlCount": 79, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 15, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + }, + { + "schemaVersion": 1, + "module": "module2", + "locale": "es", + "language": "es", + "path": "prod/module2Spanish.txt", + "sha256": "c8545d3286b47909c9f9048df73467459cccabbeb7dfe7676756ea9474164bb5", + "questName": "D_745268907_V2", + "version": "2.3", + "authoredMarkerCount": 360, + "runtimeQuestionIds": [ + "INTROM2", + "SECTION1", + "D_399982309?", + "D_861838892?", + "D_596961796?", + "D_113681507?", + "D_177526169?", + "D_564374538?", + "D_643807999?", + "D_837412550?", + "D_825189914?", + "D_615979584?", + "D_814141708?", + "D_265428345?", + "D_275143071?", + "D_388804810?", + "D_753416375?", + "D_771526486?", + "D_292658699?", + "D_491549803?", + "D_152138929?", + "D_614446276?", + "D_646042915?", + "D_270254670?", + "D_861824298?", + "D_846227588?", + "D_630231395?", + "D_234177873?", + "D_799338907?", + "D_376720409?", + "D_575646308?", + "D_798182168?", + "D_655266993?", + "D_248599913?", + "D_893965588?", + "D_439072744?", + "D_733861762?", + "D_322479862?", + "D_509383583?", + "D_697661603?", + "D_438682764?", + "D_445571225?", + "D_761822652?", + "D_737490587?", + "D_887435355?", + "D_414005872?", + "D_614123836?", + "D_731790154?", + "D_550092533?", + "D_163057677?", + "D_225047594?", + "D_297084062?", + "D_305292465?", + "D_901498441?", + "D_147792229?", + "D_976052812?", + "D_991427384?", + "D_112024853?", + "D_694817520?", + "D_991622246?", + "D_450131058?", + "D_991873978?", + "D_371176229?", + "D_982448213?", + "D_745223146?", + "D_273218182?", + "D_850202336?", + "D_799903478?", + "D_465635548?", + "D_556235252?", + "D_643361372?", + "D_172234651?", + "D_753610471?", + "D_424183977?", + "D_824287808?", + "D_889053435?", + "D_416865817?", + "D_803968511?", + "D_378572291?", + "D_846978339?", + "D_936366310?", + "D_266752903?", + "D_618427836?", + "D_774514900?", + "D_368595692?", + "D_497904005?", + "SECTION2", + "SECTION2_SKIPPED", + "INTROWH", + "INTROMENSHIS", + "D_496539718?", + "D_167997205?", + "D_972593606?", + "D_791830593?", + "INTROMENSHIS2", + "D_547633480?", + "D_164595895?", + "D_263114971?", + "D_614145455?", + "D_534920374?", + "PREG", + "D_849945160?", + "D_996243083?", + "D_405571048!", + "D_968816827_1_1?", + "D_391951010_1_1?", + "D_281494550_1_1?", + "D_771528780_1_1?", + "D_486574018_1_1?", + "D_278277373_1_1?", + "D_779052408_1_1?", + "D_133297530_1_1?", + "PREGSUMMARY_1_1", + "D_968816827_2_2?", + "D_391951010_2_2?", + "D_281494550_2_2?", + "D_771528780_2_2?", + "D_486574018_2_2?", + "D_278277373_2_2?", + "D_779052408_2_2?", + "D_133297530_2_2?", + "PREGSUMMARY_2_2", + "D_968816827_3_3?", + "D_391951010_3_3?", + "D_281494550_3_3?", + "D_771528780_3_3?", + "D_486574018_3_3?", + "D_278277373_3_3?", + "D_779052408_3_3?", + "D_133297530_3_3?", + "PREGSUMMARY_3_3", + "D_968816827_4_4?", + "D_391951010_4_4?", + "D_281494550_4_4?", + "D_771528780_4_4?", + "D_486574018_4_4?", + "D_278277373_4_4?", + "D_779052408_4_4?", + "D_133297530_4_4?", + "PREGSUMMARY_4_4", + "D_968816827_5_5?", + "D_391951010_5_5?", + "D_281494550_5_5?", + "D_771528780_5_5?", + "D_486574018_5_5?", + "D_278277373_5_5?", + "D_779052408_5_5?", + "D_133297530_5_5?", + "PREGSUMMARY_5_5", + "D_968816827_6_6?", + "D_391951010_6_6?", + "D_281494550_6_6?", + "D_771528780_6_6?", + "D_486574018_6_6?", + "D_278277373_6_6?", + "D_779052408_6_6?", + "D_133297530_6_6?", + "PREGSUMMARY_6_6", + "D_968816827_7_7?", + "D_391951010_7_7?", + "D_281494550_7_7?", + "D_771528780_7_7?", + "D_486574018_7_7?", + "D_278277373_7_7?", + "D_779052408_7_7?", + "D_133297530_7_7?", + "PREGSUMMARY_7_7", + "D_968816827_8_8?", + "D_391951010_8_8?", + "D_281494550_8_8?", + "D_771528780_8_8?", + "D_486574018_8_8?", + "D_278277373_8_8?", + "D_779052408_8_8?", + "D_133297530_8_8?", + "PREGSUMMARY_8_8", + "D_968816827_9_9?", + "D_391951010_9_9?", + "D_281494550_9_9?", + "D_771528780_9_9?", + "D_486574018_9_9?", + "D_278277373_9_9?", + "D_779052408_9_9?", + "D_133297530_9_9?", + "PREGSUMMARY_9_9", + "D_968816827_10_10?", + "D_391951010_10_10?", + "D_281494550_10_10?", + "D_771528780_10_10?", + "D_486574018_10_10?", + "D_278277373_10_10?", + "D_779052408_10_10?", + "D_133297530_10_10?", + "PREGSUMMARY_10_10", + "D_968816827_11_11?", + "D_391951010_11_11?", + "D_281494550_11_11?", + "D_771528780_11_11?", + "D_486574018_11_11?", + "D_278277373_11_11?", + "D_779052408_11_11?", + "D_133297530_11_11?", + "PREGSUMMARY_11_11", + "D_968816827_12_12?", + "D_391951010_12_12?", + "D_281494550_12_12?", + "D_771528780_12_12?", + "D_486574018_12_12?", + "D_278277373_12_12?", + "D_779052408_12_12?", + "D_133297530_12_12?", + "PREGSUMMARY_12_12", + "D_968816827_13_13?", + "D_391951010_13_13?", + "D_281494550_13_13?", + "D_771528780_13_13?", + "D_486574018_13_13?", + "D_278277373_13_13?", + "D_779052408_13_13?", + "D_133297530_13_13?", + "PREGSUMMARY_13_13", + "D_968816827_14_14?", + "D_391951010_14_14?", + "D_281494550_14_14?", + "D_771528780_14_14?", + "D_486574018_14_14?", + "D_278277373_14_14?", + "D_779052408_14_14?", + "D_133297530_14_14?", + "PREGSUMMARY_14_14", + "D_968816827_15_15?", + "D_391951010_15_15?", + "D_281494550_15_15?", + "D_771528780_15_15?", + "D_486574018_15_15?", + "D_278277373_15_15?", + "D_779052408_15_15?", + "D_133297530_15_15?", + "PREGSUMMARY_15_15", + "D_968816827_16_16?", + "D_391951010_16_16?", + "D_281494550_16_16?", + "D_771528780_16_16?", + "D_486574018_16_16?", + "D_278277373_16_16?", + "D_779052408_16_16?", + "D_133297530_16_16?", + "PREGSUMMARY_16_16", + "D_968816827_17_17?", + "D_391951010_17_17?", + "D_281494550_17_17?", + "D_771528780_17_17?", + "D_486574018_17_17?", + "D_278277373_17_17?", + "D_779052408_17_17?", + "D_133297530_17_17?", + "PREGSUMMARY_17_17", + "D_968816827_18_18?", + "D_391951010_18_18?", + "D_281494550_18_18?", + "D_771528780_18_18?", + "D_486574018_18_18?", + "D_278277373_18_18?", + "D_779052408_18_18?", + "D_133297530_18_18?", + "PREGSUMMARY_18_18", + "D_968816827_19_19?", + "D_391951010_19_19?", + "D_281494550_19_19?", + "D_771528780_19_19?", + "D_486574018_19_19?", + "D_278277373_19_19?", + "D_779052408_19_19?", + "D_133297530_19_19?", + "PREGSUMMARY_19_19", + "D_968816827_20_20?", + "D_391951010_20_20?", + "D_281494550_20_20?", + "D_771528780_20_20?", + "D_486574018_20_20?", + "D_278277373_20_20?", + "D_779052408_20_20?", + "D_133297530_20_20?", + "PREGSUMMARY_20_20", + "D_968816827_21_21?", + "D_391951010_21_21?", + "D_281494550_21_21?", + "D_771528780_21_21?", + "D_486574018_21_21?", + "D_278277373_21_21?", + "D_779052408_21_21?", + "D_133297530_21_21?", + "PREGSUMMARY_21_21", + "D_968816827_22_22?", + "D_391951010_22_22?", + "D_281494550_22_22?", + "D_771528780_22_22?", + "D_486574018_22_22?", + "D_278277373_22_22?", + "D_779052408_22_22?", + "D_133297530_22_22?", + "PREGSUMMARY_22_22", + "D_968816827_23_23?", + "D_391951010_23_23?", + "D_281494550_23_23?", + "D_771528780_23_23?", + "D_486574018_23_23?", + "D_278277373_23_23?", + "D_779052408_23_23?", + "D_133297530_23_23?", + "PREGSUMMARY_23_23", + "D_968816827_24_24?", + "D_391951010_24_24?", + "D_281494550_24_24?", + "D_771528780_24_24?", + "D_486574018_24_24?", + "D_278277373_24_24?", + "D_779052408_24_24?", + "D_133297530_24_24?", + "PREGSUMMARY_24_24", + "D_968816827_25_25?", + "D_391951010_25_25?", + "D_281494550_25_25?", + "D_771528780_25_25?", + "D_486574018_25_25?", + "D_278277373_25_25?", + "D_779052408_25_25?", + "D_133297530_25_25?", + "PREGSUMMARY_25_25", + "END_OF_LOOP", + "FERT1", + "D_939897560?", + "D_760801131?", + "D_424047361?", + "D_548355426?", + "D_224681201?", + "D_881200765?", + "D_139673389?", + "D_943996164?", + "D_994899398?", + "D_198719822?", + "D_628137243?", + "D_399078599?", + "D_560711355?", + "D_309710463?", + "D_167207966?", + "D_538349354?", + "D_767785846?", + "D_466346054?", + "D_111082535?", + "D_875135634?", + "HORMED", + "D_543780863?", + "D_880331901?", + "D_301052397?", + "D_734836192?", + "D_215455305?", + "D_809735528?", + "D_958009220?", + "D_946211808?", + "D_654271781?", + "D_220105997?", + "D_806253825?", + "D_819957363?", + "D_604086099?", + "D_938969985?", + "D_876683805?", + "D_118237712?", + "D_899455852?", + "D_902999015?", + "D_484006644?", + "D_190721176?", + "D_358011592?", + "D_807214881?", + "D_344573484?", + "D_708921303?", + "D_535533643?", + "D_901154649?", + "D_100937200?", + "D_452984435?", + "D_129924389?", + "D_404596261?", + "D_465017353?", + "D_370798456?", + "D_101144925?", + "D_583012139?", + "D_991330361?", + "D_184692605?", + "D_139348254?", + "MENOHOR", + "D_621744463?", + "D_668834883?", + "D_856627601?", + "D_801749224?", + "D_799382711?", + "D_623759247?", + "D_564185028?", + "D_560845692?", + "D_779165920?", + "D_745775718?", + "D_648678282?", + "D_850536692?", + "D_774992239?", + "D_695206943?", + "D_291707744?", + "D_792792066?", + "D_894363067?", + "D_984901301?", + "D_872509317?", + "D_378921620?", + "D_854078473?", + "D_268372217?", + "D_800943768?", + "D_590329439?", + "D_906459952?", + "D_747629521?", + "D_556129044?", + "D_563663099?", + "D_356969766?", + "D_453820991?", + "D_111271067?", + "D_597869478?", + "D_949663397?", + "D_263785082?", + "D_824165133?", + "D_295472931?", + "D_728437398?", + "D_578176688?", + "D_922903688?", + "D_963284259?", + "D_615905904?", + "D_946710366?", + "D_219538082?", + "D_583111732?", + "D_603209609?", + "D_824251330?", + "D_912818075?", + "D_138836502?", + "D_290126991?", + "TESTTHER_INTRO", + "D_111235606?", + "D_946849196?", + "D_797076693?", + "D_984514646?", + "D_414663452?", + "D_570187182?", + "D_557526470?", + "D_492822047?", + "D_466727144?", + "D_307736999?", + "D_305195766?", + "WORKACT", + "D_392658845", + "INTROSITTING", + "D_649352910", + "HOUSE1", + "D_733547268", + "D_128705365", + "D_204421360?", + "D_442059084?", + "D_992022740?", + "D_429531329?", + "D_829749579?", + "D_888313306?", + "D_644018981?", + "D_618482103?", + "D_352531133?", + "D_267261558?", + "D_517976064?", + "D_894610280?", + "D_267122668?", + "D_901660173?", + "D_222110888?", + "D_953510929?", + "D_422260069?", + "D_564242877?", + "D_411788467?", + "D_141251197?", + "D_635874413?", + "D_184448791?", + "D_768302347?", + "D_371748514?", + "D_944699052?", + "D_658018390?", + "D_858525957?", + "D_849399881?", + "D_406846149?", + "D_787591805?", + "D_689956879?", + "D_725713485?", + "D_900299856?", + "D_255761998?", + "D_571361258?", + "D_149884127?", + "D_167966775?", + "D_904844824?", + "D_845164425?", + "D_612068433?", + "D_650405110?", + "D_187772368?", + "D_865200503?", + "D_831643763?", + "D_815229596?", + "D_981509686?", + "D_921220809?", + "D_262305264?", + "D_214750556?", + "D_621878019?", + "D_409324592?", + "D_775324618?", + "D_305312165?", + "D_895837106?", + "D_522949496?", + "D_272119228?", + "SECTION4", + "D_591723682?", + "D_168431681?", + "INTROSLESCH1", + "INTROSLESCH1_1", + "D_636757313?", + "D_653906464?", + "D_580367946?", + "D_358259099?", + "D_392629868?", + "D_354980163?", + "D_424807655?", + "INTROSLESCH2", + "D_823919522?", + "D_532767229?", + "D_698673038?", + "D_711365027?", + "D_874262904?", + "D_820694957?", + "D_823541843?", + "D_825227968?", + "SLEEPHABITS", + "D_421859821", + "D_910856756?", + "D_981441822", + "D_471018082?", + "D_940733450?", + "D_406137786?", + "D_631303960?", + "D_876846761?", + "D_756521698?", + "D_479628567?", + "D_629010195?", + "D_674976924?", + "D_195662769?", + "D_214870856?", + "D_680730257?", + "D_392874924?", + "D_199254974?", + "END" + ], + "responseControlsByType": { + "checkbox": 244, + "number": 236, + "radio": 1105, + "text": 9, + "time": 6 + }, + "explicitTransitions": { + "targets": [ + "D_861838892", + "D_837412550", + "D_388804810", + "D_614446276", + "D_234177873", + "D_248599913", + "D_697661603", + "D_414005872", + "D_596961796", + "D_113681507", + "D_177526169", + "D_643807999", + "D_564374538", + "D_825189914", + "D_615979584", + "D_814141708", + "D_275143071", + "D_265428345", + "D_753416375", + "D_771526486", + "D_292658699", + "D_152138929", + "D_491549803", + "D_646042915", + "D_270254670", + "D_861824298", + "D_630231395", + "D_846227588", + "D_799338907", + "D_376720409", + "D_575646308", + "D_655266993", + "D_798182168", + "D_893965588", + "D_439072744", + "D_733861762", + "D_509383583", + "D_322479862", + "D_438682764", + "D_445571225", + "D_761822652", + "D_887435355", + "D_737490587", + "D_731790154", + "D_305292465", + "D_112024853", + "D_550092533", + "D_163057677", + "D_225047594", + "D_297084062", + "D_901498441", + "D_147792229", + "D_976052812", + "D_991427384", + "D_694817520", + "D_982448213", + "D_371176229", + "D_745223146", + "D_643361372", + "D_556235252", + "D_172234651", + "D_416865817", + "D_266752903", + "SECTION2", + "D_753610471", + "D_424183977", + "D_824287808", + "D_889053435", + "D_803968511", + "D_378572291", + "D_846978339", + "D_936366310", + "D_618427836", + "D_774514900", + "D_368595692", + "D_497904005", + "D_111235606", + "INTROMENSHIS2", + "D_972593606", + "D_791830593", + "D_534920374", + "D_614145455", + "PREG", + "D_263114971", + "D_405571048", + "D_996243083", + "FERT1", + "D_771528780_1_1", + "PREGSUMMARY_1_1", + "D_779052408_1_1", + "D_278277373_1_1", + "D_771528780_2_2", + "PREGSUMMARY_2_2", + "D_779052408_2_2", + "D_278277373_2_2", + "D_771528780_3_3", + "PREGSUMMARY_3_3", + "D_779052408_3_3", + "D_278277373_3_3", + "D_771528780_4_4", + "PREGSUMMARY_4_4", + "D_779052408_4_4", + "D_278277373_4_4", + "D_771528780_5_5", + "PREGSUMMARY_5_5", + "D_779052408_5_5", + "D_278277373_5_5", + "D_771528780_6_6", + "PREGSUMMARY_6_6", + "D_779052408_6_6", + "D_278277373_6_6", + "D_771528780_7_7", + "PREGSUMMARY_7_7", + "D_779052408_7_7", + "D_278277373_7_7", + "D_771528780_8_8", + "PREGSUMMARY_8_8", + "D_779052408_8_8", + "D_278277373_8_8", + "D_771528780_9_9", + "PREGSUMMARY_9_9", + "D_779052408_9_9", + "D_278277373_9_9", + "D_771528780_10_10", + "PREGSUMMARY_10_10", + "D_779052408_10_10", + "D_278277373_10_10", + "D_771528780_11_11", + "PREGSUMMARY_11_11", + "D_779052408_11_11", + "D_278277373_11_11", + "D_771528780_12_12", + "PREGSUMMARY_12_12", + "D_779052408_12_12", + "D_278277373_12_12", + "D_771528780_13_13", + "PREGSUMMARY_13_13", + "D_779052408_13_13", + "D_278277373_13_13", + "D_771528780_14_14", + "PREGSUMMARY_14_14", + "D_779052408_14_14", + "D_278277373_14_14", + "D_771528780_15_15", + "PREGSUMMARY_15_15", + "D_779052408_15_15", + "D_278277373_15_15", + "D_771528780_16_16", + "PREGSUMMARY_16_16", + "D_779052408_16_16", + "D_278277373_16_16", + "D_771528780_17_17", + "PREGSUMMARY_17_17", + "D_779052408_17_17", + "D_278277373_17_17", + "D_771528780_18_18", + "PREGSUMMARY_18_18", + "D_779052408_18_18", + "D_278277373_18_18", + "D_771528780_19_19", + "PREGSUMMARY_19_19", + "D_779052408_19_19", + "D_278277373_19_19", + "D_771528780_20_20", + "PREGSUMMARY_20_20", + "D_779052408_20_20", + "D_278277373_20_20", + "D_771528780_21_21", + "PREGSUMMARY_21_21", + "D_779052408_21_21", + "D_278277373_21_21", + "D_771528780_22_22", + "PREGSUMMARY_22_22", + "D_779052408_22_22", + "D_278277373_22_22", + "D_771528780_23_23", + "PREGSUMMARY_23_23", + "D_779052408_23_23", + "D_278277373_23_23", + "D_771528780_24_24", + "PREGSUMMARY_24_24", + "D_779052408_24_24", + "D_278277373_24_24", + "D_771528780_25_25", + "PREGSUMMARY_25_25", + "D_779052408_25_25", + "D_278277373_25_25", + "D_760801131", + "D_224681201", + "D_424047361", + "D_548355426", + "D_881200765", + "D_111082535", + "D_139673389", + "D_943996164", + "D_994899398", + "D_198719822", + "D_628137243", + "D_399078599", + "D_560711355", + "D_309710463", + "D_167207966", + "D_538349354", + "D_767785846", + "D_466346054", + "D_875135634", + "HORMED", + "D_880331901", + "D_809735528", + "D_220105997", + "D_938969985", + "D_902999015", + "D_807214881", + "D_901154649", + "D_404596261", + "D_583012139", + "MENOHOR", + "D_301052397", + "D_215455305", + "D_734836192", + "D_958009220", + "D_654271781", + "D_946211808", + "D_806253825", + "D_604086099", + "D_819957363", + "D_876683805", + "D_899455852", + "D_118237712", + "D_484006644", + "D_358011592", + "D_190721176", + "D_344573484", + "D_535533643", + "D_708921303", + "D_100937200", + "D_129924389", + "D_452984435", + "D_465017353", + "D_101144925", + "D_370798456", + "D_991330361", + "D_139348254", + "D_184692605", + "D_668834883", + "WORKACT", + "D_856627601", + "D_564185028", + "D_648678282", + "D_291707744", + "D_872509317", + "D_800943768", + "D_801749224", + "D_623759247", + "D_799382711", + "D_560845692", + "D_745775718", + "D_779165920", + "D_850536692", + "D_695206943", + "D_774992239", + "D_792792066", + "D_984901301", + "D_894363067", + "D_378921620", + "D_268372217", + "D_854078473", + "D_590329439", + "D_356969766", + "D_263785082", + "D_906459952", + "D_556129044", + "D_747629521", + "D_563663099", + "D_453820991", + "D_597869478", + "D_111271067", + "D_949663397", + "D_824165133", + "D_922903688", + "D_219538082", + "TESTTHER_INTRO", + "D_295472931", + "D_578176688", + "D_728437398", + "D_963284259", + "D_946710366", + "D_615905904", + "D_583111732", + "D_824251330", + "D_603209609", + "D_290126991", + "D_570187182", + "D_797076693", + "D_984514646", + "D_557526470", + "D_492822047", + "D_466727144", + "D_305195766", + "D_307736999", + "D_442059084", + "D_829749579", + "D_618482103", + "D_517976064", + "D_992022740", + "D_429531329", + "D_888313306", + "D_644018981", + "D_352531133", + "D_267261558", + "D_894610280", + "D_222110888", + "D_564242877", + "D_635874413", + "D_371748514", + "D_858525957", + "D_787591805", + "D_900299856", + "D_149884127", + "D_845164425", + "D_187772368", + "D_815229596", + "D_262305264", + "D_409324592", + "D_895837106", + "SECTION4", + "D_267122668", + "D_901660173", + "D_953510929", + "D_422260069", + "D_411788467", + "D_141251197", + "D_184448791", + "D_768302347", + "D_944699052", + "D_658018390", + "D_849399881", + "D_406846149", + "D_689956879", + "D_725713485", + "D_255761998", + "D_571361258", + "D_167966775", + "D_904844824", + "D_612068433", + "D_650405110", + "D_865200503", + "D_831643763", + "D_981509686", + "D_921220809", + "D_214750556", + "D_621878019", + "D_775324618", + "D_305312165", + "D_522949496", + "D_272119228", + "D_168431681", + "INTROSLESCH1", + "D_636757313", + "D_354980163", + "D_424807655", + "D_820694957", + "D_823541843", + "D_406137786", + "D_479628567", + "D_631303960", + "D_876846761", + "D_756521698", + "D_629010195", + "D_674976924", + "D_195662769", + "END" + ], + "byKind": { + "default": 143, + "no-response": 107, + "response": 342 + }, + "byResolution": { + "exact": 589, + "terminal": 3 + }, + "triggerTypes": { + "checkbox": 65, + "hidden": 250, + "radio": 277 + }, + "triggerValues": [ + "469512398", + "194424439", + "422188606", + "555555502", + "800410166", + "221645137", + "974248369", + "317567178", + "484055234", + "802197176", + "480724806", + "819373917", + "353358909", + "104430631", + "933374659", + "920460744", + "449861632", + "648960871", + "868025301", + "939110313", + "410083265", + "718537646", + "801142243", + "178420302", + "549031911", + "858427002", + "471375042", + "386152189", + "650420270", + "113064256", + "548167685", + "859025516", + "582425113", + "330745988", + "909774794", + "868504994", + "655309065", + "757609794", + "585076356", + "807835037", + "223216393", + "306890578", + "858244199", + "746038746", + "619799524", + "663814928", + "642004888", + "454641975", + "256131117", + "532607252", + "459188493", + "304927036", + "100181644", + "372219003", + "743731422", + "441493408", + "612012325", + "100752105", + "207913198", + "863920008", + "787142499", + "205223932", + "817131019", + "181769837", + "246843973", + "854184254", + "515434780", + "674148137", + "687050279", + "837393880", + "944874693", + "535003378", + "797221287", + "500744195", + "383015037", + "904954920", + "619501806", + "203192394", + "261267696", + "926584500", + "420058896", + "868685663", + "760484278", + "345916806", + "936042582", + "182827107", + "734860227", + "371531887", + "423631576", + "370923702", + "958538953", + "274062548" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "or(equals(D_407056417,536341288),or(equals(D_750420077,578416151),equals(D_750420077,434651539)))", + "valueIsOneOf(\"D_750420077\",578416151,434651539) or valueEquals(\"D_407056417\",536341288)", + "equals(D_643361372,933374659)", + "equals(D_643361372,920460744)", + "equals(D_643361372,449861632)", + "not (equals(\"D_407056417\",536341288) or valueIsOneOf(\"D_750420077\",578416151,434651539))", + "equals(\"D_407056417\",536341288) or valueIsOneOf(\"D_750420077\",578416151,434651539)", + "doesNotEqual(D_496539718,648960871)", + "greaterThanOrEqual(D_405571048,1)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,1)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,1)))", + "equals(D_391951010_1_1,628445697)", + "equals(D_391951010_1_1,419220239)", + "or(equals(D_391951010_1_1,223216393),equals(D_391951010_1_1,628445697))", + "equals(D_391951010_1_1,223216393)", + "equals(D_391951010_1_1,306890578)", + "equals(D_391951010_1_1,858244199)", + "equals(D_391951010_1_1,746038746)", + "valueIsOneOf('D_391951010_1_1',628445697,419220239)", + "equals(D_281494550_1_1,582602017)", + "equals(D_281494550_1_1,105727261)", + "equals(D_281494550_1_1,720288326)", + "valueIsOneOf('D_391951010_1_1',223216393,628445697,419220239)", + "equals(D_771528780_1_1,660308254)", + "equals(D_771528780_1_1,936573532)", + "equals(D_486574018_1_1,353358909)", + "equals(D_486574018_1_1,104430631)", + "valueIsOneOf('D_391951010_1_1',223216393,628445697,419220239,858244199)", + "equals(D_779052408_1_1,353358909)", + "equals(D_779052408_1_1,104430631)", + "equals(D_133297530_1_1,353358909)", + "equals(D_133297530_1_1,104430631)", + "greaterThanOrEqual(D_405571048,2)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,2)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,2)))", + "equals(D_391951010_2_2,628445697)", + "equals(D_391951010_2_2,419220239)", + "or(equals(D_391951010_2_2,223216393),equals(D_391951010_2_2,628445697))", + "equals(D_391951010_2_2,223216393)", + "equals(D_391951010_2_2,306890578)", + "equals(D_391951010_2_2,858244199)", + "equals(D_391951010_2_2,746038746)", + "valueIsOneOf('D_391951010_2_2',628445697,419220239)", + "equals(D_281494550_2_2,582602017)", + "equals(D_281494550_2_2,105727261)", + "equals(D_281494550_2_2,720288326)", + "valueIsOneOf('D_391951010_2_2',223216393,628445697,419220239)", + "equals(D_771528780_2_2,660308254)", + "equals(D_771528780_2_2,936573532)", + "equals(D_486574018_2_2,353358909)", + "equals(D_486574018_2_2,104430631)", + "valueIsOneOf('D_391951010_2_2',223216393,628445697,419220239,858244199)", + "equals(D_779052408_2_2,353358909)", + "equals(D_779052408_2_2,104430631)", + "equals(D_133297530_2_2,353358909)", + "equals(D_133297530_2_2,104430631)", + "greaterThanOrEqual(D_405571048,3)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,3)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,3)))", + "equals(D_391951010_3_3,628445697)", + "equals(D_391951010_3_3,419220239)", + "or(equals(D_391951010_3_3,223216393),equals(D_391951010_3_3,628445697))", + "equals(D_391951010_3_3,223216393)", + "equals(D_391951010_3_3,306890578)", + "equals(D_391951010_3_3,858244199)", + "equals(D_391951010_3_3,746038746)", + "valueIsOneOf('D_391951010_3_3',628445697,419220239)", + "equals(D_281494550_3_3,582602017)", + "equals(D_281494550_3_3,105727261)", + "equals(D_281494550_3_3,720288326)", + "valueIsOneOf('D_391951010_3_3',223216393,628445697,419220239)", + "equals(D_771528780_3_3,660308254)", + "equals(D_771528780_3_3,936573532)", + "equals(D_486574018_3_3,353358909)", + "equals(D_486574018_3_3,104430631)", + "valueIsOneOf('D_391951010_3_3',223216393,628445697,419220239,858244199)", + "equals(D_779052408_3_3,353358909)", + "equals(D_779052408_3_3,104430631)", + "equals(D_133297530_3_3,353358909)", + "equals(D_133297530_3_3,104430631)", + "greaterThanOrEqual(D_405571048,4)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,4)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,4)))", + "equals(D_391951010_4_4,628445697)", + "equals(D_391951010_4_4,419220239)", + "or(equals(D_391951010_4_4,223216393),equals(D_391951010_4_4,628445697))", + "equals(D_391951010_4_4,223216393)", + "equals(D_391951010_4_4,306890578)", + "equals(D_391951010_4_4,858244199)", + "equals(D_391951010_4_4,746038746)", + "valueIsOneOf('D_391951010_4_4',628445697,419220239)", + "equals(D_281494550_4_4,582602017)", + "equals(D_281494550_4_4,105727261)", + "equals(D_281494550_4_4,720288326)", + "valueIsOneOf('D_391951010_4_4',223216393,628445697,419220239)", + "equals(D_771528780_4_4,660308254)", + "equals(D_771528780_4_4,936573532)", + "equals(D_486574018_4_4,353358909)", + "equals(D_486574018_4_4,104430631)", + "valueIsOneOf('D_391951010_4_4',223216393,628445697,419220239,858244199)", + "equals(D_779052408_4_4,353358909)", + "equals(D_779052408_4_4,104430631)", + "equals(D_133297530_4_4,353358909)", + "equals(D_133297530_4_4,104430631)", + "greaterThanOrEqual(D_405571048,5)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,5)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,5)))", + "equals(D_391951010_5_5,628445697)", + "equals(D_391951010_5_5,419220239)", + "or(equals(D_391951010_5_5,223216393),equals(D_391951010_5_5,628445697))", + "equals(D_391951010_5_5,223216393)", + "equals(D_391951010_5_5,306890578)", + "equals(D_391951010_5_5,858244199)", + "equals(D_391951010_5_5,746038746)", + "valueIsOneOf('D_391951010_5_5',628445697,419220239)", + "equals(D_281494550_5_5,582602017)", + "equals(D_281494550_5_5,105727261)", + "equals(D_281494550_5_5,720288326)", + "valueIsOneOf('D_391951010_5_5',223216393,628445697,419220239)", + "equals(D_771528780_5_5,660308254)", + "equals(D_771528780_5_5,936573532)", + "equals(D_486574018_5_5,353358909)", + "equals(D_486574018_5_5,104430631)", + "valueIsOneOf('D_391951010_5_5',223216393,628445697,419220239,858244199)", + "equals(D_779052408_5_5,353358909)", + "equals(D_779052408_5_5,104430631)", + "equals(D_133297530_5_5,353358909)", + "equals(D_133297530_5_5,104430631)", + "greaterThanOrEqual(D_405571048,6)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,6)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,6)))", + "equals(D_391951010_6_6,628445697)", + "equals(D_391951010_6_6,419220239)", + "or(equals(D_391951010_6_6,223216393),equals(D_391951010_6_6,628445697))", + "equals(D_391951010_6_6,223216393)", + "equals(D_391951010_6_6,306890578)", + "equals(D_391951010_6_6,858244199)", + "equals(D_391951010_6_6,746038746)", + "valueIsOneOf('D_391951010_6_6',628445697,419220239)", + "equals(D_281494550_6_6,582602017)", + "equals(D_281494550_6_6,105727261)", + "equals(D_281494550_6_6,720288326)", + "valueIsOneOf('D_391951010_6_6',223216393,628445697,419220239)", + "equals(D_771528780_6_6,660308254)", + "equals(D_771528780_6_6,936573532)", + "equals(D_486574018_6_6,353358909)", + "equals(D_486574018_6_6,104430631)", + "valueIsOneOf('D_391951010_6_6',223216393,628445697,419220239,858244199)", + "equals(D_779052408_6_6,353358909)", + "equals(D_779052408_6_6,104430631)", + "equals(D_133297530_6_6,353358909)", + "equals(D_133297530_6_6,104430631)", + "greaterThanOrEqual(D_405571048,7)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,7)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,7)))", + "equals(D_391951010_7_7,628445697)", + "equals(D_391951010_7_7,419220239)", + "or(equals(D_391951010_7_7,223216393),equals(D_391951010_7_7,628445697))", + "equals(D_391951010_7_7,223216393)", + "equals(D_391951010_7_7,306890578)", + "equals(D_391951010_7_7,858244199)", + "equals(D_391951010_7_7,746038746)", + "valueIsOneOf('D_391951010_7_7',628445697,419220239)", + "equals(D_281494550_7_7,582602017)", + "equals(D_281494550_7_7,105727261)", + "equals(D_281494550_7_7,720288326)", + "valueIsOneOf('D_391951010_7_7',223216393,628445697,419220239)", + "equals(D_771528780_7_7,660308254)", + "equals(D_771528780_7_7,936573532)", + "equals(D_486574018_7_7,353358909)", + "equals(D_486574018_7_7,104430631)", + "valueIsOneOf('D_391951010_7_7',223216393,628445697,419220239,858244199)", + "equals(D_779052408_7_7,353358909)", + "equals(D_779052408_7_7,104430631)", + "equals(D_133297530_7_7,353358909)", + "equals(D_133297530_7_7,104430631)", + "greaterThanOrEqual(D_405571048,8)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,8)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,8)))", + "equals(D_391951010_8_8,628445697)", + "equals(D_391951010_8_8,419220239)", + "or(equals(D_391951010_8_8,223216393),equals(D_391951010_8_8,628445697))", + "equals(D_391951010_8_8,223216393)", + "equals(D_391951010_8_8,306890578)", + "equals(D_391951010_8_8,858244199)", + "equals(D_391951010_8_8,746038746)", + "valueIsOneOf('D_391951010_8_8',628445697,419220239)", + "equals(D_281494550_8_8,582602017)", + "equals(D_281494550_8_8,105727261)", + "equals(D_281494550_8_8,720288326)", + "valueIsOneOf('D_391951010_8_8',223216393,628445697,419220239)", + "equals(D_771528780_8_8,660308254)", + "equals(D_771528780_8_8,936573532)", + "equals(D_486574018_8_8,353358909)", + "equals(D_486574018_8_8,104430631)", + "valueIsOneOf('D_391951010_8_8',223216393,628445697,419220239,858244199)", + "equals(D_779052408_8_8,353358909)", + "equals(D_779052408_8_8,104430631)", + "equals(D_133297530_8_8,353358909)", + "equals(D_133297530_8_8,104430631)", + "greaterThanOrEqual(D_405571048,9)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,9)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,9)))", + "equals(D_391951010_9_9,628445697)", + "equals(D_391951010_9_9,419220239)", + "or(equals(D_391951010_9_9,223216393),equals(D_391951010_9_9,628445697))", + "equals(D_391951010_9_9,223216393)", + "equals(D_391951010_9_9,306890578)", + "equals(D_391951010_9_9,858244199)", + "equals(D_391951010_9_9,746038746)", + "valueIsOneOf('D_391951010_9_9',628445697,419220239)", + "equals(D_281494550_9_9,582602017)", + "equals(D_281494550_9_9,105727261)", + "equals(D_281494550_9_9,720288326)", + "valueIsOneOf('D_391951010_9_9',223216393,628445697,419220239)", + "equals(D_771528780_9_9,660308254)", + "equals(D_771528780_9_9,936573532)", + "equals(D_486574018_9_9,353358909)", + "equals(D_486574018_9_9,104430631)", + "valueIsOneOf('D_391951010_9_9',223216393,628445697,419220239,858244199)", + "equals(D_779052408_9_9,353358909)", + "equals(D_779052408_9_9,104430631)", + "equals(D_133297530_9_9,353358909)", + "equals(D_133297530_9_9,104430631)", + "greaterThanOrEqual(D_405571048,10)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,10)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,10)))", + "equals(D_391951010_10_10,628445697)", + "equals(D_391951010_10_10,419220239)", + "or(equals(D_391951010_10_10,223216393),equals(D_391951010_10_10,628445697))", + "equals(D_391951010_10_10,223216393)", + "equals(D_391951010_10_10,306890578)", + "equals(D_391951010_10_10,858244199)", + "equals(D_391951010_10_10,746038746)", + "valueIsOneOf('D_391951010_10_10',628445697,419220239)", + "equals(D_281494550_10_10,582602017)", + "equals(D_281494550_10_10,105727261)", + "equals(D_281494550_10_10,720288326)", + "valueIsOneOf('D_391951010_10_10',223216393,628445697,419220239)", + "equals(D_771528780_10_10,660308254)", + "equals(D_771528780_10_10,936573532)", + "equals(D_486574018_10_10,353358909)", + "equals(D_486574018_10_10,104430631)", + "valueIsOneOf('D_391951010_10_10',223216393,628445697,419220239,858244199)", + "equals(D_779052408_10_10,353358909)", + "equals(D_779052408_10_10,104430631)", + "equals(D_133297530_10_10,353358909)", + "equals(D_133297530_10_10,104430631)", + "greaterThanOrEqual(D_405571048,11)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,11)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,11)))", + "equals(D_391951010_11_11,628445697)", + "equals(D_391951010_11_11,419220239)", + "or(equals(D_391951010_11_11,223216393),equals(D_391951010_11_11,628445697))", + "equals(D_391951010_11_11,223216393)", + "equals(D_391951010_11_11,306890578)", + "equals(D_391951010_11_11,858244199)", + "equals(D_391951010_11_11,746038746)", + "valueIsOneOf('D_391951010_11_11',628445697,419220239)", + "equals(D_281494550_11_11,582602017)", + "equals(D_281494550_11_11,105727261)", + "equals(D_281494550_11_11,720288326)", + "valueIsOneOf('D_391951010_11_11',223216393,628445697,419220239)", + "equals(D_771528780_11_11,660308254)", + "equals(D_771528780_11_11,936573532)", + "equals(D_486574018_11_11,353358909)", + "equals(D_486574018_11_11,104430631)", + "valueIsOneOf('D_391951010_11_11',223216393,628445697,419220239,858244199)", + "equals(D_779052408_11_11,353358909)", + "equals(D_779052408_11_11,104430631)", + "equals(D_133297530_11_11,353358909)", + "equals(D_133297530_11_11,104430631)", + "greaterThanOrEqual(D_405571048,12)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,12)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,12)))", + "equals(D_391951010_12_12,628445697)", + "equals(D_391951010_12_12,419220239)", + "or(equals(D_391951010_12_12,223216393),equals(D_391951010_12_12,628445697))", + "equals(D_391951010_12_12,223216393)", + "equals(D_391951010_12_12,306890578)", + "equals(D_391951010_12_12,858244199)", + "equals(D_391951010_12_12,746038746)", + "valueIsOneOf('D_391951010_12_12',628445697,419220239)", + "equals(D_281494550_12_12,582602017)", + "equals(D_281494550_12_12,105727261)", + "equals(D_281494550_12_12,720288326)", + "valueIsOneOf('D_391951010_12_12',223216393,628445697,419220239)", + "equals(D_771528780_12_12,660308254)", + "equals(D_771528780_12_12,936573532)", + "equals(D_486574018_12_12,353358909)", + "equals(D_486574018_12_12,104430631)", + "valueIsOneOf('D_391951010_12_12',223216393,628445697,419220239,858244199)", + "equals(D_779052408_12_12,353358909)", + "equals(D_779052408_12_12,104430631)", + "equals(D_133297530_12_12,353358909)", + "equals(D_133297530_12_12,104430631)", + "greaterThanOrEqual(D_405571048,13)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,13)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,13)))", + "equals(D_391951010_13_13,628445697)", + "equals(D_391951010_13_13,419220239)", + "or(equals(D_391951010_13_13,223216393),equals(D_391951010_13_13,628445697))", + "equals(D_391951010_13_13,223216393)", + "equals(D_391951010_13_13,306890578)", + "equals(D_391951010_13_13,858244199)", + "equals(D_391951010_13_13,746038746)", + "valueIsOneOf('D_391951010_13_13',628445697,419220239)", + "equals(D_281494550_13_13,582602017)", + "equals(D_281494550_13_13,105727261)", + "equals(D_281494550_13_13,720288326)", + "valueIsOneOf('D_391951010_13_13',223216393,628445697,419220239)", + "equals(D_771528780_13_13,660308254)", + "equals(D_771528780_13_13,936573532)", + "equals(D_486574018_13_13,353358909)", + "equals(D_486574018_13_13,104430631)", + "valueIsOneOf('D_391951010_13_13',223216393,628445697,419220239,858244199)", + "equals(D_779052408_13_13,353358909)", + "equals(D_779052408_13_13,104430631)", + "equals(D_133297530_13_13,353358909)", + "equals(D_133297530_13_13,104430631)", + "greaterThanOrEqual(D_405571048,14)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,14)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,14)))", + "equals(D_391951010_14_14,628445697)", + "equals(D_391951010_14_14,419220239)", + "or(equals(D_391951010_14_14,223216393),equals(D_391951010_14_14,628445697))", + "equals(D_391951010_14_14,223216393)", + "equals(D_391951010_14_14,306890578)", + "equals(D_391951010_14_14,858244199)", + "equals(D_391951010_14_14,746038746)", + "valueIsOneOf('D_391951010_14_14',628445697,419220239)", + "equals(D_281494550_14_14,582602017)", + "equals(D_281494550_14_14,105727261)", + "equals(D_281494550_14_14,720288326)", + "valueIsOneOf('D_391951010_14_14',223216393,628445697,419220239)", + "equals(D_771528780_14_14,660308254)", + "equals(D_771528780_14_14,936573532)", + "equals(D_486574018_14_14,353358909)", + "equals(D_486574018_14_14,104430631)", + "valueIsOneOf('D_391951010_14_14',223216393,628445697,419220239,858244199)", + "equals(D_779052408_14_14,353358909)", + "equals(D_779052408_14_14,104430631)", + "equals(D_133297530_14_14,353358909)", + "equals(D_133297530_14_14,104430631)", + "greaterThanOrEqual(D_405571048,15)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,15)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,15)))", + "equals(D_391951010_15_15,628445697)", + "equals(D_391951010_15_15,419220239)", + "or(equals(D_391951010_15_15,223216393),equals(D_391951010_15_15,628445697))", + "equals(D_391951010_15_15,223216393)", + "equals(D_391951010_15_15,306890578)", + "equals(D_391951010_15_15,858244199)", + "equals(D_391951010_15_15,746038746)", + "valueIsOneOf('D_391951010_15_15',628445697,419220239)", + "equals(D_281494550_15_15,582602017)", + "equals(D_281494550_15_15,105727261)", + "equals(D_281494550_15_15,720288326)", + "valueIsOneOf('D_391951010_15_15',223216393,628445697,419220239)", + "equals(D_771528780_15_15,660308254)", + "equals(D_771528780_15_15,936573532)", + "equals(D_486574018_15_15,353358909)", + "equals(D_486574018_15_15,104430631)", + "valueIsOneOf('D_391951010_15_15',223216393,628445697,419220239,858244199)", + "equals(D_779052408_15_15,353358909)", + "equals(D_779052408_15_15,104430631)", + "equals(D_133297530_15_15,353358909)", + "equals(D_133297530_15_15,104430631)", + "greaterThanOrEqual(D_405571048,16)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,16)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,16)))", + "equals(D_391951010_16_16,628445697)", + "equals(D_391951010_16_16,419220239)", + "or(equals(D_391951010_16_16,223216393),equals(D_391951010_16_16,628445697))", + "equals(D_391951010_16_16,223216393)", + "equals(D_391951010_16_16,306890578)", + "equals(D_391951010_16_16,858244199)", + "equals(D_391951010_16_16,746038746)", + "valueIsOneOf('D_391951010_16_16',628445697,419220239)", + "equals(D_281494550_16_16,582602017)", + "equals(D_281494550_16_16,105727261)", + "equals(D_281494550_16_16,720288326)", + "valueIsOneOf('D_391951010_16_16',223216393,628445697,419220239)", + "equals(D_771528780_16_16,660308254)", + "equals(D_771528780_16_16,936573532)", + "equals(D_486574018_16_16,353358909)", + "equals(D_486574018_16_16,104430631)", + "valueIsOneOf('D_391951010_16_16',223216393,628445697,419220239,858244199)", + "equals(D_779052408_16_16,353358909)", + "equals(D_779052408_16_16,104430631)", + "equals(D_133297530_16_16,353358909)", + "equals(D_133297530_16_16,104430631)", + "greaterThanOrEqual(D_405571048,17)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,17)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,17)))", + "equals(D_391951010_17_17,628445697)", + "equals(D_391951010_17_17,419220239)", + "or(equals(D_391951010_17_17,223216393),equals(D_391951010_17_17,628445697))", + "equals(D_391951010_17_17,223216393)", + "equals(D_391951010_17_17,306890578)", + "equals(D_391951010_17_17,858244199)", + "equals(D_391951010_17_17,746038746)", + "valueIsOneOf('D_391951010_17_17',628445697,419220239)", + "equals(D_281494550_17_17,582602017)", + "equals(D_281494550_17_17,105727261)", + "equals(D_281494550_17_17,720288326)", + "valueIsOneOf('D_391951010_17_17',223216393,628445697,419220239)", + "equals(D_771528780_17_17,660308254)", + "equals(D_771528780_17_17,936573532)", + "equals(D_486574018_17_17,353358909)", + "equals(D_486574018_17_17,104430631)", + "valueIsOneOf('D_391951010_17_17',223216393,628445697,419220239,858244199)", + "equals(D_779052408_17_17,353358909)", + "equals(D_779052408_17_17,104430631)", + "equals(D_133297530_17_17,353358909)", + "equals(D_133297530_17_17,104430631)", + "greaterThanOrEqual(D_405571048,18)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,18)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,18)))", + "equals(D_391951010_18_18,628445697)", + "equals(D_391951010_18_18,419220239)", + "or(equals(D_391951010_18_18,223216393),equals(D_391951010_18_18,628445697))", + "equals(D_391951010_18_18,223216393)", + "equals(D_391951010_18_18,306890578)", + "equals(D_391951010_18_18,858244199)", + "equals(D_391951010_18_18,746038746)", + "valueIsOneOf('D_391951010_18_18',628445697,419220239)", + "equals(D_281494550_18_18,582602017)", + "equals(D_281494550_18_18,105727261)", + "equals(D_281494550_18_18,720288326)", + "valueIsOneOf('D_391951010_18_18',223216393,628445697,419220239)", + "equals(D_771528780_18_18,660308254)", + "equals(D_771528780_18_18,936573532)", + "equals(D_486574018_18_18,353358909)", + "equals(D_486574018_18_18,104430631)", + "valueIsOneOf('D_391951010_18_18',223216393,628445697,419220239,858244199)", + "equals(D_779052408_18_18,353358909)", + "equals(D_779052408_18_18,104430631)", + "equals(D_133297530_18_18,353358909)", + "equals(D_133297530_18_18,104430631)", + "greaterThanOrEqual(D_405571048,19)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,19)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,19)))", + "equals(D_391951010_19_19,628445697)", + "equals(D_391951010_19_19,419220239)", + "or(equals(D_391951010_19_19,223216393),equals(D_391951010_19_19,628445697))", + "equals(D_391951010_19_19,223216393)", + "equals(D_391951010_19_19,306890578)", + "equals(D_391951010_19_19,858244199)", + "equals(D_391951010_19_19,746038746)", + "valueIsOneOf('D_391951010_19_19',628445697,419220239)", + "equals(D_281494550_19_19,582602017)", + "equals(D_281494550_19_19,105727261)", + "equals(D_281494550_19_19,720288326)", + "valueIsOneOf('D_391951010_19_19',223216393,628445697,419220239)", + "equals(D_771528780_19_19,660308254)", + "equals(D_771528780_19_19,936573532)", + "equals(D_486574018_19_19,353358909)", + "equals(D_486574018_19_19,104430631)", + "valueIsOneOf('D_391951010_19_19',223216393,628445697,419220239,858244199)", + "equals(D_779052408_19_19,353358909)", + "equals(D_779052408_19_19,104430631)", + "equals(D_133297530_19_19,353358909)", + "equals(D_133297530_19_19,104430631)", + "greaterThanOrEqual(D_405571048,20)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,20)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,20)))", + "equals(D_391951010_20_20,628445697)", + "equals(D_391951010_20_20,419220239)", + "or(equals(D_391951010_20_20,223216393),equals(D_391951010_20_20,628445697))", + "equals(D_391951010_20_20,223216393)", + "equals(D_391951010_20_20,306890578)", + "equals(D_391951010_20_20,858244199)", + "equals(D_391951010_20_20,746038746)", + "valueIsOneOf('D_391951010_20_20',628445697,419220239)", + "equals(D_281494550_20_20,582602017)", + "equals(D_281494550_20_20,105727261)", + "equals(D_281494550_20_20,720288326)", + "valueIsOneOf('D_391951010_20_20',223216393,628445697,419220239)", + "equals(D_771528780_20_20,660308254)", + "equals(D_771528780_20_20,936573532)", + "equals(D_486574018_20_20,353358909)", + "equals(D_486574018_20_20,104430631)", + "valueIsOneOf('D_391951010_20_20',223216393,628445697,419220239,858244199)", + "equals(D_779052408_20_20,353358909)", + "equals(D_779052408_20_20,104430631)", + "equals(D_133297530_20_20,353358909)", + "equals(D_133297530_20_20,104430631)", + "greaterThanOrEqual(D_405571048,21)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,21)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,21)))", + "equals(D_391951010_21_21,628445697)", + "equals(D_391951010_21_21,419220239)", + "or(equals(D_391951010_21_21,223216393),equals(D_391951010_21_21,628445697))", + "equals(D_391951010_21_21,223216393)", + "equals(D_391951010_21_21,306890578)", + "equals(D_391951010_21_21,858244199)", + "equals(D_391951010_21_21,746038746)", + "valueIsOneOf('D_391951010_21_21',628445697,419220239)", + "equals(D_281494550_21_21,582602017)", + "equals(D_281494550_21_21,105727261)", + "equals(D_281494550_21_21,720288326)", + "valueIsOneOf('D_391951010_21_21',223216393,628445697,419220239)", + "equals(D_771528780_21_21,660308254)", + "equals(D_771528780_21_21,936573532)", + "equals(D_486574018_21_21,353358909)", + "equals(D_486574018_21_21,104430631)", + "valueIsOneOf('D_391951010_21_21',223216393,628445697,419220239,858244199)", + "equals(D_779052408_21_21,353358909)", + "equals(D_779052408_21_21,104430631)", + "equals(D_133297530_21_21,353358909)", + "equals(D_133297530_21_21,104430631)", + "greaterThanOrEqual(D_405571048,22)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,22)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,22)))", + "equals(D_391951010_22_22,628445697)", + "equals(D_391951010_22_22,419220239)", + "or(equals(D_391951010_22_22,223216393),equals(D_391951010_22_22,628445697))", + "equals(D_391951010_22_22,223216393)", + "equals(D_391951010_22_22,306890578)", + "equals(D_391951010_22_22,858244199)", + "equals(D_391951010_22_22,746038746)", + "valueIsOneOf('D_391951010_22_22',628445697,419220239)", + "equals(D_281494550_22_22,582602017)", + "equals(D_281494550_22_22,105727261)", + "equals(D_281494550_22_22,720288326)", + "valueIsOneOf('D_391951010_22_22',223216393,628445697,419220239)", + "equals(D_771528780_22_22,660308254)", + "equals(D_771528780_22_22,936573532)", + "equals(D_486574018_22_22,353358909)", + "equals(D_486574018_22_22,104430631)", + "valueIsOneOf('D_391951010_22_22',223216393,628445697,419220239,858244199)", + "equals(D_779052408_22_22,353358909)", + "equals(D_779052408_22_22,104430631)", + "equals(D_133297530_22_22,353358909)", + "equals(D_133297530_22_22,104430631)", + "greaterThanOrEqual(D_405571048,23)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,23)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,23)))", + "equals(D_391951010_23_23,628445697)", + "equals(D_391951010_23_23,419220239)", + "or(equals(D_391951010_23_23,223216393),equals(D_391951010_23_23,628445697))", + "equals(D_391951010_23_23,223216393)", + "equals(D_391951010_23_23,306890578)", + "equals(D_391951010_23_23,858244199)", + "equals(D_391951010_23_23,746038746)", + "valueIsOneOf('D_391951010_23_23',628445697,419220239)", + "equals(D_281494550_23_23,582602017)", + "equals(D_281494550_23_23,105727261)", + "equals(D_281494550_23_23,720288326)", + "valueIsOneOf('D_391951010_23_23',223216393,628445697,419220239)", + "equals(D_771528780_23_23,660308254)", + "equals(D_771528780_23_23,936573532)", + "equals(D_486574018_23_23,353358909)", + "equals(D_486574018_23_23,104430631)", + "valueIsOneOf('D_391951010_23_23',223216393,628445697,419220239,858244199)", + "equals(D_779052408_23_23,353358909)", + "equals(D_779052408_23_23,104430631)", + "equals(D_133297530_23_23,353358909)", + "equals(D_133297530_23_23,104430631)", + "greaterThanOrEqual(D_405571048,24)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,24)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,24)))", + "equals(D_391951010_24_24,628445697)", + "equals(D_391951010_24_24,419220239)", + "or(equals(D_391951010_24_24,223216393),equals(D_391951010_24_24,628445697))", + "equals(D_391951010_24_24,223216393)", + "equals(D_391951010_24_24,306890578)", + "equals(D_391951010_24_24,858244199)", + "equals(D_391951010_24_24,746038746)", + "valueIsOneOf('D_391951010_24_24',628445697,419220239)", + "equals(D_281494550_24_24,582602017)", + "equals(D_281494550_24_24,105727261)", + "equals(D_281494550_24_24,720288326)", + "valueIsOneOf('D_391951010_24_24',223216393,628445697,419220239)", + "equals(D_771528780_24_24,660308254)", + "equals(D_771528780_24_24,936573532)", + "equals(D_486574018_24_24,353358909)", + "equals(D_486574018_24_24,104430631)", + "valueIsOneOf('D_391951010_24_24',223216393,628445697,419220239,858244199)", + "equals(D_779052408_24_24,353358909)", + "equals(D_779052408_24_24,104430631)", + "equals(D_133297530_24_24,353358909)", + "equals(D_133297530_24_24,104430631)", + "greaterThanOrEqual(D_405571048,25)", + "or(and(equals(D_849945160,353358909),greaterThan(D_405571048,25)),and(doesNotEqual(D_849945160,353358909),greaterThanOrEqual(D_405571048,25)))", + "equals(D_391951010_25_25,628445697)", + "equals(D_391951010_25_25,419220239)", + "or(equals(D_391951010_25_25,223216393),equals(D_391951010_25_25,628445697))", + "equals(D_391951010_25_25,223216393)", + "equals(D_391951010_25_25,306890578)", + "equals(D_391951010_25_25,858244199)", + "equals(D_391951010_25_25,746038746)", + "valueIsOneOf('D_391951010_25_25',628445697,419220239)", + "equals(D_281494550_25_25,582602017)", + "equals(D_281494550_25_25,105727261)", + "equals(D_281494550_25_25,720288326)", + "valueIsOneOf('D_391951010_25_25',223216393,628445697,419220239)", + "equals(D_771528780_25_25,660308254)", + "equals(D_771528780_25_25,936573532)", + "equals(D_486574018_25_25,353358909)", + "equals(D_486574018_25_25,104430631)", + "valueIsOneOf('D_391951010_25_25',223216393,628445697,419220239,858244199)", + "equals(D_779052408_25_25,353358909)", + "equals(D_779052408_25_25,104430631)", + "equals(D_133297530_25_25,353358909)", + "equals(D_133297530_25_25,104430631)", + "doesNotEqual(D_762700622,'')", + "doesNotExist('D_762700622')", + "equals(D_668834883,246843973)", + "equals(D_668834883,854184254)", + "equals(D_668834883,515434780)", + "equals(D_668834883,674148137)", + "valueIsOneOf(\"D_668834883\",807835037) or valueLength(\"D_640559281\")>0", + "valueLength('D_640559281')>0", + "valueLength('D_640559281')==0", + "equals(D_800943768,687050279)", + "valueIsOneOf(\"D_800943768\",807835037) or valueLength(\"D_235516216\")>0", + "valueLength('D_235516216')>0", + "valueLength('D_235516216')==0", + "equals(D_263785082,837393880)", + "equals(D_263785082,944874693)", + "valueIsOneOf(\"D_263785082\",807835037) or valueLength(\"D_542108835\")>0", + "valueLength('D_542108835')>0", + "valueLength('D_542108835')==0", + "or(equals(D_946849196,729863969),or(equals(D_946849196,108104748),or(equals(D_946849196,717308596),or(equals(D_946849196,746788766),or(equals(D_946849196,158214723),doesNotEqual(D_946849196,658810736))))))", + "doesNotEqual(D_557526470,'')", + "doesNotExist('D_557526470')", + "equals(D_613744428,353358909)", + "valueEquals(\"D_613744428\",353358909)", + "equals(\"D_613744428\",353358909)", + "someSelected(\"D_980120253_1\",\"D_980120253_2\",\"D_980120253_3\",\"D_980120253_4\",\"D_980120253_5\",\"D_980120253_6\",\"D_993029890_1\",\"D_993029890_2\",\"D_993029890_3\",\"D_993029890_4\",\"D_993029890_5\",\"D_993029890_6\",\"D_980196073_1\",\"D_980196073_2\",\"D_980196073_3\",\"D_980196073_4\",\"D_980196073_5\",\"D_980196073_6\",\"D_115422925_1\",\"D_115422925_2\",\"D_115422925_3\",\"D_115422925_4\",\"D_115422925_5\",\"D_115422925_6\",\"D_151161693_1\",\"D_151161693_2\",\"D_151161693_3\",\"D_151161693_4\",\"D_151161693_5\",\"D_151161693_6\")", + "someSelected(%22D_980120253_1%22%2C%22D_980120253_2%22%2C%22D_980120253_3%22%2C%22D_980120253_4%22%2C%22D_980120253_5%22%2C%22D_980120253_6%22)", + "someSelected(%22D_993029890_1%22%2C%22D_993029890_2%22%2C%22D_993029890_3%22%2C%22D_993029890_4%22%2C%22D_993029890_5%22%2C%22D_993029890_6%22)", + "someSelected(%22D_980196073_1%22%2C%22D_980196073_2%22%2C%22D_980196073_3%22%2C%22D_980196073_4%22%2C%22D_980196073_5%22%2C%22D_980196073_6%22)", + "someSelected(%22D_115422925_1%22%2C%22D_115422925_2%22%2C%22D_115422925_3%22%2C%22D_115422925_4%22%2C%22D_115422925_5%22%2C%22D_115422925_6%22)", + "someSelected(%22D_151161693_1%22%2C%22D_151161693_2%22%2C%22D_151161693_3%22%2C%22D_151161693_4%22%2C%22D_151161693_5%22%2C%22D_151161693_6%22)", + "equals(D_204421360,797221287)", + "equals(numberOfChoicesSelected(D_442059084,0),1)", + "greaterThan(numberOfChoicesSelected(D_442059084,0),1)", + "doesNotExist('D_442059084')", + "equals(D_204421360,500744195)", + "equals(numberOfChoicesSelected(D_829749579,0),1)", + "greaterThan(numberOfChoicesSelected(D_829749579,0),1)", + "doesNotExist('D_829749579')", + "equals(D_204421360,383015037)", + "equals(numberOfChoicesSelected(D_618482103,0),1)", + "greaterThan(numberOfChoicesSelected(D_618482103,0),1)", + "doesNotExist('D_618482103')", + "equals(D_517976064,904954920)", + "equals(numberOfChoicesSelected(D_894610280,0),1)", + "greaterThan(numberOfChoicesSelected(D_894610280,0),1)", + "doesNotExist('D_894610280')", + "equals(D_517976064,619501806)", + "equals(numberOfChoicesSelected(D_222110888,0),1)", + "greaterThan(numberOfChoicesSelected(D_222110888,0),1)", + "doesNotExist('D_222110888')", + "equals(D_517976064,203192394)", + "equals(numberOfChoicesSelected(D_564242877,0),1)", + "greaterThan(numberOfChoicesSelected(D_564242877,0),1)", + "doesNotExist('D_564242877')", + "equals(D_517976064,261267696)", + "equals(numberOfChoicesSelected(D_635874413,0),1)", + "greaterThan(numberOfChoicesSelected(D_635874413,0),1)", + "doesNotExist('D_635874413')", + "equals(D_517976064,926584500)", + "equals(numberOfChoicesSelected(D_371748514,0),1)", + "greaterThan(numberOfChoicesSelected(D_371748514,0),1)", + "doesNotExist('D_371748514')", + "equals(D_517976064,420058896)", + "equals(numberOfChoicesSelected(D_858525957,0),1)", + "greaterThan(numberOfChoicesSelected(D_858525957,0),1)", + "doesNotExist('D_858525957')", + "equals(D_517976064,868685663)", + "equals(numberOfChoicesSelected(D_787591805,0),1)", + "greaterThan(numberOfChoicesSelected(D_787591805,0),1)", + "doesNotExist('D_787591805')", + "equals(D_517976064,760484278)", + "equals(numberOfChoicesSelected(D_900299856,0),1)", + "greaterThan(numberOfChoicesSelected(D_900299856,0),1)", + "doesNotExist('D_900299856')", + "equals(D_517976064,345916806)", + "equals(numberOfChoicesSelected(D_149884127,0),1)", + "greaterThan(numberOfChoicesSelected(D_149884127,0),1)", + "doesNotExist('D_149884127')", + "equals(D_517976064,936042582)", + "equals(numberOfChoicesSelected(D_845164425,0),1)", + "greaterThan(numberOfChoicesSelected(D_845164425,0),1)", + "doesNotExist('D_845164425')", + "equals(D_517976064,182827107)", + "equals(numberOfChoicesSelected(D_187772368,0),1)", + "greaterThan(numberOfChoicesSelected(D_187772368,0),1)", + "doesNotExist('D_187772368')", + "equals(D_517976064,734860227)", + "equals(numberOfChoicesSelected(D_815229596,0),1)", + "greaterThan(numberOfChoicesSelected(D_815229596,0),1)", + "doesNotExist('D_815229596')", + "equals(D_517976064,371531887)", + "equals(numberOfChoicesSelected(D_262305264,0),1)", + "greaterThan(numberOfChoicesSelected(D_262305264,0),1)", + "doesNotExist('D_262305264')", + "equals(D_517976064,423631576)", + "equals(numberOfChoicesSelected(D_409324592,0),1)", + "greaterThan(numberOfChoicesSelected(D_409324592,0),1)", + "doesNotExist('D_409324592')", + "equals(D_517976064,181769837)", + "equals(numberOfChoicesSelected(D_895837106,0),1)", + "greaterThan(numberOfChoicesSelected(D_895837106,0),1)", + "doesNotExist('D_895837106')", + "valueIsOneOf('D_750420077',578416151,434651539) or valueEquals('D_407056417',536341288)", + "equals(D_591723682,353358909)", + "doesNotEqual(D_591723682,353358909)", + "equals(D_479628567,370923702)", + "equals(D_674976924,958538953)", + "equals(D_674976924,274062548)" + ], + "sitesByScope": { + "grid-inline": 3, + "grid-row": 5, + "inline": 1025, + "question": 362, + "response": 7 + }, + "sitesByAttribute": { + "data-displayif": 5, + "displayif": 1397 + } + }, + "grids": [ + { + "questionId": "D_392658845", + "questionIndex": 452, + "rowQuestionIds": [ + "D_699101535", + "D_652561589", + "D_589522790", + "D_239572239" + ], + "rowCount": 4, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "503218834", + "464753847", + "729681071", + "258023209", + "638092100", + "628177728", + "919739344", + "755558825", + "949555271", + "201002865" + ] + }, + { + "questionId": "D_649352910", + "questionIndex": 454, + "rowQuestionIds": [ + "D_654385712", + "D_263483736", + "D_806746224", + "D_396649512" + ], + "rowCount": 4, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "503218834", + "464753847", + "729681071", + "258023209", + "638092100", + "628177728", + "919739344", + "755558825", + "949555271", + "201002865" + ] + }, + { + "questionId": "D_733547268", + "questionIndex": 456, + "rowQuestionIds": [ + "D_980120253", + "D_993029890", + "D_980196073", + "D_115422925", + "D_151161693" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "648960871", + "239152340", + "582006876", + "645894551", + "996315715", + "671267928", + "647504893" + ] + }, + { + "questionId": "D_128705365", + "questionIndex": 457, + "rowQuestionIds": [ + "D_607323377", + "D_491484323", + "D_588637585", + "D_199039940", + "D_986476579" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "428999623", + "248303092", + "206020811", + "264163865", + "638092100", + "628177728", + "805918496" + ] + }, + { + "questionId": "D_421859821", + "questionIndex": 536, + "rowQuestionIds": [ + "D_220238240", + "D_151006826", + "D_965290070", + "D_781115321", + "D_453071098", + "D_513065503", + "D_257137378" + ], + "rowCount": 7, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "104430631", + "525779785", + "565036180", + "284343405", + "270994579" + ] + }, + { + "questionId": "D_981441822", + "questionIndex": 538, + "rowQuestionIds": [ + "D_403155173", + "D_576621769", + "D_988508028", + "D_186488870", + "D_922388461", + "D_760686611", + "D_354550061", + "D_179705366", + "D_955609858" + ], + "rowCount": 9, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "514068832", + "774439579", + "747099514", + "977681388" + ] + } + ], + "loops": [ + { + "loopIndex": "1", + "loopMaxQuestionIds": [ + "D_405571048" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 104, + 113, + 122, + 131, + 140, + 149, + 158, + 167, + 176, + 185, + 194, + 203, + 212, + 221, + 230, + 239, + 248, + 257, + 266, + 275, + 284, + 293, + 302, + 311, + 320 + ], + "boundaryIndex": 329 + } + ], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 360, + "processorQuestionCount": 554, + "processedQuestionCount": 554, + "renderedFormCount": 554, + "controlCount": 3466, + "responseControlCount": 1600, + "explicitTransitionCount": 592, + "sequentialAdjacencyCount": 553, + "resolvedExplicitTransitionCount": 592, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1402, + "gridQuestionCount": 6, + "gridRowCount": 34, + "loopStartCount": 25, + "loopDefinitionCount": 1, + "loopExpandedQuestionCount": 225, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 691 + } + }, + { + "schemaVersion": 1, + "module": "module3", + "locale": "en", + "language": "en", + "path": "prod/module3.txt", + "sha256": "73f6a1ba8bb0ce4b3c1cb56566b3c46b0d8552ff299be81a57ed6c4d4597ea8f", + "questName": "D_965707586", + "version": "1.6", + "authoredMarkerCount": 314, + "runtimeQuestionIds": [ + "INTROM3", + "INTROSMO", + "D_947205597?", + "D_763164658?", + "D_194557808?", + "D_790436165?", + "D_639684251?", + "D_798549704?", + "D_227439141?", + "D_318569032?", + "D_204884007?", + "D_400969127?", + "D_820220019?", + "D_304657762?", + "D_815776236?", + "D_560293868?", + "D_399659169?", + "D_667002790?", + "D_534351312?", + "D_594608533?", + "D_923371868?", + "D_445537380?", + "D_387489930?", + "D_493642768?", + "D_821629868?", + "D_434034366?", + "D_842088582?", + "D_624111331?", + "D_761037053?", + "D_550244580?", + "D_751046675?", + "D_238422161?", + "D_716554850?", + "D_724079256?", + "D_360277949?", + "D_242276545?", + "D_183546626?", + "D_982470672?", + "D_333072838?", + "D_388614168?", + "D_656911826?", + "D_370901901?", + "D_240089798?", + "D_536216847?", + "D_622394149?", + "D_442002787?", + "D_208578552?", + "D_480155628?", + "D_640944113?", + "D_866159532?", + "D_182431332?", + "D_241771440?", + "D_814115676?", + "D_564438246?", + "D_789271762?", + "D_622210148?", + "D_457290610?", + "D_997412869?", + "D_395480458?", + "D_674378360?", + "D_780721084?", + "D_287715042?", + "D_145078867?", + "D_598954337?", + "D_103566006?", + "D_254689566?", + "D_951151270?", + "D_237415094?", + "D_868868325?", + "D_243519559?", + "D_365370279?", + "D_645681293?", + "D_440364083?", + "D_306320432?", + "D_213679054?", + "D_257300783?", + "D_101710639?", + "D_344631681?", + "D_872821562?", + "D_344583659?", + "D_671380198?", + "D_785139115?", + "D_549400618?", + "D_394049992?", + "D_673842048?", + "D_568113091?", + "D_537807075?", + "D_960332453?", + "D_495592561?", + "D_705282587?", + "D_133396976?", + "D_628770824?", + "D_558707243?", + "D_929034795?", + "D_995220236?", + "D_551301510?", + "D_981755099?", + "D_127871793?", + "D_154603497?", + "D_472007171?", + "D_787047261?", + "D_915293401?", + "D_268407776?", + "D_938333920?", + "D_585702271?", + "D_827661413?", + "D_356470028?", + "D_720305356?", + "D_951901114?", + "D_471435289?", + "D_445712879?", + "D_620425840?", + "D_798627028?", + "D_584608368?", + "D_921623945?", + "D_370253256?", + "D_470096941?", + "D_544356746?", + "D_559388168?", + "D_450151555?", + "D_546410473?", + "D_458395129?", + "D_845122623?", + "D_679300202?", + "D_146877593?", + "D_780685299?", + "D_311569789?", + "D_652477674?", + "D_780767323?", + "D_385490512?", + "D_119378795?", + "D_286598574?", + "D_689339933?", + "D_812430894?", + "D_178242940?", + "D_501545129?", + "D_197309242?", + "D_550850568?", + "D_277284423?", + "D_127038003?", + "D_337810964?", + "D_334292580?", + "D_738219521", + "D_252017075", + "INTROMAR", + "D_830608495?", + "SMMAR", + "D_319397722?", + "D_210016366?", + "D_116080663?", + "D_503058092?", + "D_180308733?", + "D_831873859?", + "D_594280517?", + "D_863664828?", + "D_129677435?", + "D_930208825?", + "D_719293094?", + "D_722122662?", + "D_556963634?", + "D_492742957?", + "D_377064836?", + "D_258291510?", + "D_175995366?", + "D_643099118?", + "D_864290328?", + "D_386950237?", + "D_480217113?", + "D_645361463?", + "D_882838859?", + "D_524914900?", + "D_140848765?", + "D_378254382?", + "D_891825638?", + "D_444759994?", + "D_746817928?", + "D_992757226?", + "D_405178123?", + "D_698314386?", + "D_363377579?", + "D_964154290?", + "D_171050898?", + "D_606675249?", + "D_411960217?", + "D_755923078?", + "D_381268397?", + "D_723763329?", + "D_724990284?", + "D_383748300?", + "D_199612020?", + "D_755298453?", + "D_777877159?", + "D_680697711?", + "D_325229459?", + "D_116510981?", + "D_942945860?", + "D_521073718?", + "D_859228803?", + "D_589885595?", + "D_659140794?", + "D_445187084?", + "D_142164107?", + "D_695423703?", + "D_816891201?", + "D_177252178?", + "D_116014097?", + "D_562595294?", + "D_268240612?", + "D_446121108?", + "D_319252189?", + "D_822964046?", + "D_878281875?", + "D_989594002?", + "D_596004621?", + "D_459096272?", + "D_586306068?", + "D_101170268?", + "D_908399883?", + "D_653198444?", + "D_742544044?", + "D_921663542?", + "D_818380721?", + "D_179510070?", + "D_700173707?", + "D_259481608?", + "D_786517174?", + "D_276575533?", + "D_891996278?", + "D_238953261?", + "D_517100968?", + "D_810324917?", + "D_922708844?", + "D_336810811?", + "D_925215135?", + "D_402300898?", + "D_677733128?", + "D_702729897?", + "D_795265404?", + "D_432310123?", + "D_355689185?", + "D_766791333?", + "D_742254559?", + "D_420155119?", + "D_532755074?", + "D_681586194?", + "D_370352501?", + "D_970325871?", + "D_536166591?", + "D_119257304?", + "D_933417196?", + "D_937550939?", + "D_258703325?", + "D_585819411?", + "D_265469878?", + "D_349510816?", + "D_375227733?", + "D_752795304?", + "D_417552256?", + "D_963040791?", + "D_685659661?", + "D_511145980?", + "D_227784207?", + "INTROALC", + "D_448968121?", + "D_429228540?", + "D_250456537?", + "D_556837046?", + "D_338467033?", + "D_480426504?", + "D_789159346?", + "D_447720598?", + "D_726847824?", + "D_481662464?", + "D_411088265?", + "D_880067330?", + "D_178665310?", + "D_242987943?", + "D_228752045?", + "D_103045461?", + "D_254739443?", + "ALCLIFE1", + "D_633553324", + "D_470862706", + "INTROSE", + "D_863593410?", + "D_525152373?", + "D_146319128?", + "D_910501158?", + "D_345457702?", + "D_711858159?", + "D_467751479?", + "D_858858333?", + "D_795761911?", + "D_662762705?", + "D_463908980?", + "D_605063358?", + "D_648216681?", + "D_466473224?", + "EYECOLORINTRO", + "D_857219333?", + "D_384562783?", + "D_394410256?", + "D_524971659?", + "D_352986465?", + "END" + ], + "responseControlsByType": { + "checkbox": 73, + "number": 142, + "radio": 823, + "text": 9 + }, + "explicitTransitions": { + "targets": [ + "D_337810964", + "D_624111331", + "D_194557808", + "D_798549704", + "D_304657762", + "D_227439141", + "D_318569032", + "D_204884007", + "D_400969127", + "D_820220019", + "D_560293868", + "D_182431332", + "D_761037053", + "D_238422161", + "D_982470672", + "D_716554850", + "D_724079256", + "D_360277949", + "D_242276545", + "D_183546626", + "D_388614168", + "D_306320432", + "D_241771440", + "D_789271762", + "D_780721084", + "D_622210148", + "D_457290610", + "D_997412869", + "D_395480458", + "D_674378360", + "D_145078867", + "D_981755099", + "D_213679054", + "D_344631681", + "D_394049992", + "D_872821562", + "D_344583659", + "D_671380198", + "D_785139115", + "D_549400618", + "D_568113091", + "D_559388168", + "D_127871793", + "D_787047261", + "D_356470028", + "D_915293401", + "D_268407776", + "D_938333920", + "D_585702271", + "D_827661413", + "D_951901114", + "D_450151555", + "D_845122623", + "D_780767323", + "D_679300202", + "D_146877593", + "D_780685299", + "D_311569789", + "D_652477674", + "D_119378795", + "D_738219521", + "INTROALC", + "D_524914900", + "D_210016366", + "D_180308733", + "D_719293094", + "D_831873859", + "D_594280517", + "D_863664828", + "D_129677435", + "D_930208825", + "D_377064836", + "D_556963634", + "D_325229459", + "D_140848765", + "D_444759994", + "D_964154290", + "D_746817928", + "D_992757226", + "D_405178123", + "D_698314386", + "D_363377579", + "D_755923078", + "D_606675249", + "D_101170268", + "D_116510981", + "D_859228803", + "D_816891201", + "D_589885595", + "D_659140794", + "D_445187084", + "D_142164107", + "D_695423703", + "D_268240612", + "D_116014097", + "D_355689185", + "D_908399883", + "D_921663542", + "D_276575533", + "D_818380721", + "D_179510070", + "D_700173707", + "D_259481608", + "D_786517174", + "D_810324917", + "D_238953261", + "D_766791333", + "D_532755074", + "D_933417196", + "D_681586194", + "D_370352501", + "D_970325871", + "D_536166591", + "D_119257304", + "D_265469878", + "D_258703325", + "D_429228540", + "INTROSE", + "D_250456537", + "D_447720598", + "D_480426504", + "ALCLIFE1", + "D_254739443", + "D_795761911", + "EYECOLORINTRO", + "D_463908980", + "D_466473224", + "D_648216681" + ], + "byKind": { + "default": 23, + "no-response": 42, + "response": 189 + }, + "byResolution": { + "exact": 254 + }, + "triggerTypes": { + "hidden": 65, + "radio": 189 + }, + "triggerValues": [ + "151488193", + "805449318", + "486319890", + "132232896", + "419415087", + "299561721", + "716761013", + "804785430", + "317567178", + "484055234", + "802197176", + "104430631", + "353358909", + "417208949", + "797736697", + "480609810", + "485011582", + "865134801", + "667010122", + "648960871", + "102445389", + "388196732", + "649327523", + "587052987", + "838336013" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_947205597,712653855)", + "doesNotExist('D_798549704') or valueEquals('D_798549704',317567178)", + "valueIsOneOf('D_798549704',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_639684251,804785430),and(or(or(equals(D_639684251,716761013),equals(D_639684251,299561721)),equals(D_639684251,419415087)),and(equals(D_798549704,484055234),equals(D_400969127,353358909)))),and(or(or(equals(D_639684251,716761013),equals(D_639684251,299561721)),equals(D_639684251,419415087)),and(equals(D_798549704,802197176),equals(D_400969127,353358909)))),1),equals(D_947205597,712653855))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",18)<=17 or valueOrDefault(\"D_204884007\",18)<=17)))", + "valueOrDefault('D_408696162',18)<=17", + "valueOrDefault('D_408696162',1)> 17", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,17),17))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,17),17))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,17))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",25)<=24 and valueOrDefault(\"D_204884007\",17)>=18)))", + "valueOrDefault('D_408696162',1)>=18 and valueOrDefault('D_408696162',25)<=24", + "valueOrDefault('D_408696162',19)< 18", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,24),24))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,24),24))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,24))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",30)<=29 and valueOrDefault(\"D_204884007\",24)>=25)))", + "valueOrDefault('D_408696162',1)>=25 and valueOrDefault('D_408696162',30)<=29", + "valueOrDefault('D_408696162',26)< 25", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,29),29))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,29),29))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,29))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",40)<=39 and valueOrDefault(\"D_204884007\",29)>=30)))", + "valueOrDefault('D_408696162',1)>30 and valueOrDefault('D_408696162',40)<=39", + "valueOrDefault('D_408696162',31)< 30", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,39),39))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,39),39))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,39))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",50)<=49 and valueOrDefault(\"D_204884007\",39)>=40)))", + "valueOrDefault('D_408696162',1)>=40 and valueOrDefault('D_408696162',50)<=49", + "valueOrDefault('D_408696162',41)< 40", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,49),49))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,49),49))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,49))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",60)<=59 and valueOrDefault(\"D_204884007\",49)>=50)))", + "valueOrDefault('D_408696162',1)>=50 and valueOrDefault('D_408696162',60)<=59", + "valueOrDefault('D_408696162',51)< 50", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,59),59))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,59),59))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,59))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",70)<=69 and valueOrDefault(\"D_204884007\",59)>=60)))", + "valueOrDefault('D_408696162',1)>=60 and valueOrDefault('D_408696162',70)<=69", + "valueOrDefault('D_408696162',61)< 60", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,69),69))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,69),69))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,69))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",69)>=70 or valueOrDefault(\"D_204884007\",69)>=70)))", + "valueOrDefault('age',1)>=70 and valueOrDefault('D_408696162',1)<70", + "valueOrDefault('D_408696162',1)>70", + "equals(D_947205597,706254326)", + "doesNotExist('D_238422161') or valueEquals('D_238422161',317567178)", + "valueIsOneOf('D_238422161',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_751046675,804785430),and(or(or(equals(D_751046675,716761013),equals(D_751046675,299561721)),equals(D_751046675,419415087)),and(equals(D_238422161,484055234),equals(D_242276545,353358909)))),and(or(or(equals(D_751046675,716761013),equals(D_751046675,299561721)),equals(D_751046675,419415087)),and(equals(D_238422161,802197176),equals(D_242276545,353358909)))),1),equals(D_947205597,706254326))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",18)<=17 or valueOrDefault(\"D_360277949\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_517801904,-1),0)", + "lessThan(isDefined(D_517801904,-1),0)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,17),17))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,17),17))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,17))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",25)<=24 and valueOrDefault(\"D_360277949\",17)>=18)))", + "valueOrDefault('D_517801904',1)>=18 and valueOrDefault('D_517801904',1)<=24", + "lessThan(isDefined(D_517801904,-1),18)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,24),24))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,24),24))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,24))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",30)<=29 and valueOrDefault(\"D_360277949\",24)>=25)))", + "valueOrDefault('D_517801904',1)>=25 and valueOrDefault('D_517801904',30)<=29", + "lessThan(isDefined(D_517801904,-1),25)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,29),29))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,29),29))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,29))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",40)<=39 and valueOrDefault(\"D_360277949\",29)>=30)))", + "valueOrDefault('D_517801904',1)>30 and valueOrDefault('D_517801904',40)<=39", + "lessThan(isDefined(D_517801904,-1),30)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,39),39))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,39),39))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,39))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",50)<=49 and valueOrDefault(\"D_360277949\",39)>=40)))", + "valueOrDefault('D_517801904',1)>=40 and valueOrDefault('D_517801904',50)<=49", + "lessThan(isDefined(D_517801904,-1),40)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,49),49))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,49),49))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,49))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",60)<=59 and valueOrDefault(\"D_360277949\",49)>=50)))", + "valueOrDefault('D_517801904',1)>=50 and valueOrDefault('D_517801904',60)<=59", + "lessThan(isDefined(D_517801904,-1),50)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,59),59))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,59),59))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,59))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",70)<=69 and valueOrDefault(\"D_360277949\",59)>=60)))", + "valueOrDefault('D_517801904',1)>=60 and valueOrDefault('D_517801904',70)<=69", + "lessThan(isDefined(D_517801904,-1),60)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,69),69))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,69),69))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,69))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",69)>=70 or valueOrDefault(\"D_360277949\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_517801904,-1),70)", + "lessThan(isDefined(D_517801904,-1),70)", + "equals(D_947205597,198133418)", + "doesNotExist('D_789271762') or valueEquals('D_789271762',317567178)", + "valueIsOneOf('D_789271762',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_564438246,804785430),and(or(or(equals(D_564438246,716761013),equals(D_564438246,299561721)),equals(D_564438246,419415087)),and(equals(D_789271762,484055234),equals(D_395480458,353358909)))),and(or(or(equals(D_564438246,716761013),equals(D_564438246,299561721)),equals(D_564438246,419415087)),and(equals(D_789271762,802197176),equals(D_395480458,353358909)))),1),equals(D_947205597,198133418))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",18)<=17 or valueOrDefault(\"D_997412869\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),0)", + "lessThan(isDefined(D_851145096,-1),0)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,17),17))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,17),17))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,17))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",25)<=24 and valueOrDefault(\"D_997412869\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),18)", + "lessThan(isDefined(D_851145096,-1),18)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,24),24))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,24),24))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,24))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",30)<=29 and valueOrDefault(\"D_997412869\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),25)", + "lessThan(isDefined(D_851145096,-1),25)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,29),29))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,29),29))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,29))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",40)<=39 and valueOrDefault(\"D_997412869\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),30)", + "lessThan(isDefined(D_851145096,-1),30)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,39),39))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,39),39))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,39))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",50)<=49 and valueOrDefault(\"D_997412869\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),40)", + "lessThan(isDefined(D_851145096,-1),40)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,49),49))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,49),49))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,49))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",60)<=59 and valueOrDefault(\"D_997412869\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),50)", + "lessThan(isDefined(D_851145096,-1),50)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,59),59))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,59),59))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,59))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",70)<=69 and valueOrDefault(\"D_997412869\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),60)", + "lessThan(isDefined(D_851145096,-1),60)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,69),69))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,69),69))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,69))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",69)>=70 or valueOrDefault(\"D_997412869\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),70)", + "lessThan(isDefined(D_851145096,-1),70)", + "equals(D_947205597,817381897)", + "doesNotExist('D_344631681') or valueEquals('D_344631681',317567178)", + "valueIsOneOf('D_344631681',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_101710639,804785430),and(or(or(equals(D_101710639,716761013),equals(D_101710639,299561721)),equals(D_101710639,419415087)),and(equals(D_344631681,484055234),equals(D_785139115,353358909)))),and(or(or(equals(D_101710639,716761013),equals(D_101710639,299561721)),equals(D_101710639,419415087)),and(equals(D_344631681,802197176),equals(D_785139115,353358909)))),1),equals(D_947205597,817381897))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",18)<=17 or valueOrDefault(\"D_671380198\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),0)", + "lessThan(isDefined(D_424527685,-1),0)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,17),17))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,17),17))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,17))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",25)<=24 and valueOrDefault(\"D_671380198\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),18)", + "lessThan(isDefined(D_424527685,-1),18)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,24),24))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,24),24))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,24))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",30)<=29 and valueOrDefault(\"D_671380198\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),25)", + "lessThan(isDefined(D_424527685,-1),25)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,29),29))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,29),29))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,29))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",40)<=39 and valueOrDefault(\"D_671380198\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),30)", + "lessThan(isDefined(D_424527685,-1),30)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,39),39))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,39),39))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,39))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",50)<=49 and valueOrDefault(\"D_671380198\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),40)", + "lessThan(isDefined(D_424527685,-1),40)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,49),49))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,49),49))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,49))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",60)<=59 and valueOrDefault(\"D_671380198\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),50)", + "lessThan(isDefined(D_424527685,-1),50)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,59),59))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,59),59))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,59))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",70)<=69 and valueOrDefault(\"D_671380198\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),60)", + "lessThan(isDefined(D_424527685,-1),60)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,69),69))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,69),69))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,69))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",69)>=70 or valueOrDefault(\"D_671380198\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),70)", + "lessThan(isDefined(D_424527685,-1),70)", + "equals(D_947205597,539648641)", + "doesNotExist('D_787047261') or valueEquals('D_787047261',317567178)", + "valueIsOneOf('D_787047261',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_472007171,804785430),and(or(or(equals(D_472007171,716761013),equals(D_472007171,299561721)),equals(D_472007171,419415087)),and(equals(D_787047261,484055234),equals(D_585702271,353358909)))),and(or(or(equals(D_472007171,716761013),equals(D_472007171,299561721)),equals(D_472007171,419415087)),and(equals(D_787047261,802197176),equals(D_585702271,353358909)))),1),equals(D_947205597,539648641))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",18)<=17 or valueOrDefault(\"D_938333920\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),0)", + "lessThan(isDefined(D_234430294,-1),0)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,17),17))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,17),17))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,17))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",25)<=24 and valueOrDefault(\"D_938333920\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),18)", + "lessThan(isDefined(D_234430294,-1),18)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,24),24))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,24),24))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,24))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",30)<=29 and valueOrDefault(\"D_938333920\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),25)", + "lessThan(isDefined(D_234430294,-1),25)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,29),29))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,29),29))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,29))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",40)<=39 and valueOrDefault(\"D_938333920\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),30)", + "lessThan(isDefined(D_234430294,-1),30)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,39),39))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,39),39))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,39))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",50)<=49 and valueOrDefault(\"D_938333920\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),40)", + "lessThan(isDefined(D_234430294,-1),40)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,49),49))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,49),49))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,49))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",60)<=59 and valueOrDefault(\"D_938333920\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),50)", + "lessThan(isDefined(D_234430294,-1),50)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,59),59))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,59),59))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,59))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",70)<=69 and valueOrDefault(\"D_938333920\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),60)", + "lessThan(isDefined(D_234430294,-1),60)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,69),69))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,69),69))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,69))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",69)>=70 or valueOrDefault(\"D_938333920\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),70)", + "lessThan(isDefined(D_234430294,-1),70)", + "equals(D_947205597,686310465)", + "doesNotExist('D_845122623') or valueEquals('D_845122623',317567178)", + "valueIsOneOf('D_845122623',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_458395129,804785430),and(or(or(equals(D_458395129,716761013),equals(D_458395129,299561721)),equals(D_458395129,419415087)),and(equals(D_845122623,484055234),equals(D_311569789,353358909)))),and(or(or(equals(D_458395129,716761013),equals(D_458395129,299561721)),equals(D_458395129,419415087)),and(equals(D_845122623,802197176),equals(D_311569789,353358909)))),1),equals(D_947205597,686310465))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",18)<=17 or valueOrDefault(\"D_780685299\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),0)", + "lessThan(isDefined(D_663551714,-1),0)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,17),17))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,17),17))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,17))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",25)<=24 and valueOrDefault(\"D_780685299\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),18)", + "lessThan(isDefined(D_663551714,-1),18)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,24),24))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,24),24))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,24))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",30)<=29 and valueOrDefault(\"D_780685299\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),25)", + "lessThan(isDefined(D_663551714,-1),25)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,29),29))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,29),29))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,29))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",40)<=39 and valueOrDefault(\"D_780685299\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),30)", + "lessThan(isDefined(D_663551714,-1),30)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,39),39))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,39),39))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,39))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",50)<=49 and valueOrDefault(\"D_780685299\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),40)", + "lessThan(isDefined(D_663551714,-1),40)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,49),49))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,49),49))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,49))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",60)<=59 and valueOrDefault(\"D_780685299\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),50)", + "lessThan(isDefined(D_663551714,-1),50)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,59),59))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,59),59))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,59))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",70)<=69 and valueOrDefault(\"D_780685299\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),60)", + "lessThan(isDefined(D_663551714,-1),60)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,69),69))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,69),69))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,69))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",69)>=70 or valueOrDefault(\"D_780685299\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),70)", + "lessThan(isDefined(D_663551714,-1),70)", + "greaterThan(difference(age%2C2)%2C18)", + "greaterThan(difference(age%2C2)%2C25)", + "greaterThan(difference(age%2C2)%2C30)", + "greaterThan(difference(age%2C2)%2C40)", + "greaterThan(difference(age%2C2)%2C50)", + "greaterThan(difference(age%2C2)%2C60)", + "greaterThanOrEqual(age%2C70)", + "equals(D_830608495,760521319)", + "doesNotExist('D_180308733') or valueEquals('D_180308733',317567178)", + "valueIsOneOf('D_180308733',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_503058092,804785430),and(or(or(equals(D_503058092,716761013),equals(D_503058092,299561721)),equals(D_503058092,419415087)),and(equals(D_180308733,484055234),equals(D_129677435,353358909)))),and(or(or(equals(D_503058092,716761013),equals(D_503058092,299561721)),equals(D_503058092,419415087)),and(equals(D_180308733,802197176),equals(D_129677435,353358909)))),1),equals(D_830608495,760521319))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",18)<=17 or valueOrDefault(\"D_863664828\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),0)", + "lessThan(isDefined(D_889949861,-1),0)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,17),17))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,17),17))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,17))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",25)<=24 and valueOrDefault(\"D_863664828\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),18)", + "lessThan(isDefined(D_889949861,-1),18)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,24),24))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,24),24))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,24))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",30)<=29 and valueOrDefault(\"D_863664828\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),25)", + "lessThan(isDefined(D_889949861,-1),25)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,29),29))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,29),29))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,29))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",40)<=39 and valueOrDefault(\"D_863664828\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),30)", + "lessThan(isDefined(D_889949861,-1),30)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,39),39))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,39),39))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,39))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",50)<=49 and valueOrDefault(\"D_863664828\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),40)", + "lessThan(isDefined(D_889949861,-1),40)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,49),49))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,49),49))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,49))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",60)<=59 and valueOrDefault(\"D_863664828\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),50)", + "lessThan(isDefined(D_889949861,-1),50)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,59),59))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,59),59))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,59))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",70)<=69 and valueOrDefault(\"D_863664828\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),60)", + "lessThan(isDefined(D_889949861,-1),60)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,69),69))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,69),69))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,69))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",69)>=70 or valueOrDefault(\"D_863664828\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),70)", + "lessThan(isDefined(D_889949861,-1),70)", + "equals(D_830608495,158841370)", + "doesNotExist('D_444759994') or valueEquals('D_444759994',317567178)", + "valueIsOneOf('D_444759994',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_891825638,804785430),and(or(or(equals(D_891825638,716761013),equals(D_891825638,299561721)),equals(D_891825638,419415087)),and(equals(D_444759994,484055234),equals(D_698314386,353358909)))),and(or(or(equals(D_891825638,716761013),equals(D_891825638,299561721)),equals(D_891825638,419415087)),and(equals(D_444759994,802197176),equals(D_698314386,353358909)))),1),equals(D_830608495,158841370))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",18)<=17 or valueOrDefault(\"D_405178123\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),0)", + "lessThan(isDefined(D_628818510,-1),0)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,17),17))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,17),17))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,17))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",25)<=24 and valueOrDefault(\"D_405178123\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),18)", + "lessThan(isDefined(D_628818510,-1),18)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,24),24))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,24),24))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,24))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",30)<=29 and valueOrDefault(\"D_405178123\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),25)", + "lessThan(isDefined(D_628818510,-1),25)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,29),29))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,29),29))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,29))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",40)<=39 and valueOrDefault(\"D_405178123\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),30)", + "lessThan(isDefined(D_628818510,-1),30)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,39),39))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,39),39))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,39))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",50)<=49 and valueOrDefault(\"D_405178123\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),40)", + "lessThan(isDefined(D_628818510,-1),40)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,49),49))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,49),49))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,49))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",60)<=59 and valueOrDefault(\"D_405178123\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),50)", + "lessThan(isDefined(D_628818510,-1),50)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,59),59))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,59),59))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,59))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",70)<=69 and valueOrDefault(\"D_405178123\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),60)", + "lessThan(isDefined(D_628818510,-1),60)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,69),69))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,69),69))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,69))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",69)>=70 or valueOrDefault(\"D_405178123\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),70)", + "lessThan(isDefined(D_628818510,-1),70)", + "equals(D_830608495,349034127)", + "valueIsOneOf('D_859228803',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_521073718,804785430),and(or(or(equals(D_521073718,716761013),equals(D_521073718,299561721)),equals(D_521073718,419415087)),and(equals(D_859228803,484055234),equals(D_142164107,353358909)))),and(or(or(equals(D_521073718,716761013),equals(D_521073718,299561721)),equals(D_521073718,419415087)),and(equals(D_859228803,802197176),equals(D_142164107,353358909)))),1),equals(D_830608495,349034127))", + "doesNotExist('D_859228803') or valueEquals('D_859228803',317567178)", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",18)<=17 or valueOrDefault(\"D_445187084\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),0)", + "lessThan(isDefined(D_742716427,-1),0)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,17),17))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,17),17))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,17))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",25)<=24 and valueOrDefault(\"D_445187084\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),18)", + "lessThan(isDefined(D_742716427,-1),18)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,24),24))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,24),24))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,24))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",30)<=29 and valueOrDefault(\"D_445187084\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),25)", + "lessThan(isDefined(D_742716427,-1),25)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,29),29))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,29),29))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,29))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",40)<=39 and valueOrDefault(\"D_445187084\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),30)", + "lessThan(isDefined(D_742716427,-1),30)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,39),39))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,39),39))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,39))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",50)<=49 and valueOrDefault(\"D_445187084\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),40)", + "lessThan(isDefined(D_742716427,-1),40)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,49),49))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,49),49))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,49))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",60)<=59 and valueOrDefault(\"D_445187084\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),50)", + "lessThan(isDefined(D_742716427,-1),50)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,59),59))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,59),59))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,59))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",70)<=69 and valueOrDefault(\"D_445187084\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),60)", + "lessThan(isDefined(D_742716427,-1),60)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,69),69))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,69),69))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,69))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",69)>=70 or valueOrDefault(\"D_445187084\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),70)", + "lessThan(isDefined(D_742716427,-1),70)", + "equals(D_830608495,713594719)", + "valueIsOneOf('D_921663542',484055234,802197176)", + "doesNotExist('D_921663542') or valueEquals('D_921663542',317567178)", + "and(doesNotEqual(or(or(equals(D_742544044,804785430),and(or(or(equals(D_742544044,716761013),equals(D_742544044,299561721)),equals(D_742544044,419415087)),and(equals(D_921663542,484055234),equals(D_259481608,353358909)))),and(or(or(equals(D_742544044,716761013),equals(D_742544044,299561721)),equals(D_742544044,419415087)),and(equals(D_921663542,802197176),equals(D_259481608,353358909)))),1),equals(D_830608495,713594719))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",18)<=17 or valueOrDefault(\"D_700173707\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),0)", + "lessThan(isDefined(D_622843252,-1),0)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,17),17))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,17),17))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,17))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",25)<=24 and valueOrDefault(\"D_700173707\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),18)", + "lessThan(isDefined(D_622843252,-1),18)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,24),24))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,24),24))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,24))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",30)<=29 and valueOrDefault(\"D_700173707\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),25)", + "lessThan(isDefined(D_622843252,-1),25)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,29),29))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,29),29))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,29))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",40)<=39 and valueOrDefault(\"D_700173707\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),30)", + "lessThan(isDefined(D_622843252,-1),30)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,39),39))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,39),39))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,39))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",50)<=49 and valueOrDefault(\"D_700173707\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),40)", + "lessThan(isDefined(D_622843252,-1),40)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,49),49))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,49),49))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,49))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",60)<=59 and valueOrDefault(\"D_700173707\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),50)", + "lessThan(isDefined(D_622843252,-1),50)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,59),59))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,59),59))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,59))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",70)<=69 and valueOrDefault(\"D_700173707\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),60)", + "lessThan(isDefined(D_622843252,-1),60)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,69),69))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,69),69))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,69))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",69)>=70 or valueOrDefault(\"D_700173707\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),70)", + "lessThan(isDefined(D_622843252,-1),70)", + "equals(D_830608495,675129470)", + "doesNotExist('D_532755074') or valueEquals('D_532755074',317567178)", + "valueIsOneOf('D_532755074',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_420155119,804785430),and(or(or(equals(D_420155119,716761013),equals(D_420155119,299561721)),equals(D_420155119,419415087)),and(equals(D_532755074,484055234),equals(D_536166591,353358909)))),and(or(or(equals(D_420155119,716761013),equals(D_420155119,299561721)),equals(D_420155119,419415087)),and(equals(D_532755074,802197176),equals(D_536166591,353358909)))),1),equals(D_830608495,675129470))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",18)<=17 or valueOrDefault(\"D_970325871\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),0)", + "lessThan(isDefined(D_185168695,-1),0)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,17),17))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,17),17))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,17))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",25)<=24 and valueOrDefault(\"D_970325871\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),18)", + "lessThan(isDefined(D_185168695,-1),18)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,24),24))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,24),24))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,24))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",30)<=29 and valueOrDefault(\"D_970325871\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),25)", + "lessThan(isDefined(D_185168695,-1),25)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,29),29))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,29),29))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,29))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",40)<=39 and valueOrDefault(\"D_970325871\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),30)", + "lessThan(isDefined(D_185168695,-1),30)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,39),39))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,39),39))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,39))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",50)<=49 and valueOrDefault(\"D_970325871\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),40)", + "lessThan(isDefined(D_185168695,-1),40)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,49),49))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,49),49))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,49))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",60)<=59 and valueOrDefault(\"D_970325871\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),50)", + "lessThan(isDefined(D_185168695,-1),50)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,59),59))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,59),59))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,59))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",70)<=69 and valueOrDefault(\"D_970325871\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),60)", + "lessThan(isDefined(D_185168695,-1),60)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,69),69))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,69),69))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,69))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",69)>=70 or valueOrDefault(\"D_970325871\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),70)", + "lessThan(isDefined(D_185168695,-1),70)", + "equals(D_447720598,549079588)", + "equals(D_447720598,896953195)", + "equals(D_447720598,889023234)", + "equals(D_447720598,181769837)", + "valueEquals(\"D_429228540\",132232896) and valueLength(\"D_141874857\")>=1 and valueEquals(\"D_338467033\",353358909)", + "equals(D_407056417,536341288)", + "equals(D_407056417,654207589)", + "valueEquals(\"D_429228540\",132232896) and valueLength(\"D_141874857\")>=1 and (valueEquals(\"D_338467033\",353358909) or (valueEquals(\"D_338467033\",104430631) and exists(\"D_480426504\")))", + "doesNotEqual(isDefined(D_141874857,-1),-1)", + "equals(isDefined(D_141874857,-1),-1)", + "doesNotExist(\"D_480426504\")", + "exists(\"D_480426504\")", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D0%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D17", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D18%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D24", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D25%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D29", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D30%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D39", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D40%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D49", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D50%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D59", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D60%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D69", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D70", + "someSelected(\"D_294629316_1\",\"D_294629316_2\",\"D_294629316_3\",\"D_294629316_4\",\"D_294629316_5\",\"D_294629316_6\",\"D_294629316_7\",\"D_294629316_8\",\"D_164707243_1\",\"D_164707243_2\",\"D_164707243_3\",\"D_164707243_4\",\"D_164707243_5\",\"D_164707243_6\",\"D_164707243_7\",\"D_164707243_8\",\"D_771426895_1\",\"D_771426895_2\",\"D_771426895_3\",\"D_771426895_4\",\"D_771426895_5\",\"D_771426895_6\",\"D_771426895_7\",\"D_771426895_8\",\"D_818310825_1\",\"D_818310825_2\",\"D_818310825_3\",\"D_818310825_4\",\"D_818310825_5\",\"D_818310825_6\",\"D_818310825_7\",\"D_818310825_8\",\"D_843593800_1\",\"D_843593800_2\",\"D_843593800_3\",\"D_843593800_4\",\"D_843593800_5\",\"D_843593800_6\",\"D_843593800_7\",\"D_843593800_8\",\"D_175385712_1\",\"D_175385712_2\",\"D_175385712_3\",\"D_175385712_4\",\"D_175385712_5\",\"D_175385712_6\",\"D_175385712_7\",\"D_175385712_8\",\"D_772143730_1\",\"D_772143730_2\",\"D_772143730_3\",\"D_772143730_4\",\"D_772143730_5\",\"D_772143730_6\",\"D_772143730_7\",\"D_772143730_8\",\"D_602102163_1\",\"D_602102163_2\",\"D_602102163_3\",\"D_602102163_4\",\"D_602102163_5\",\"D_602102163_6\",\"D_602102163_7\",\"D_602102163_8\")", + "someSelected(%22D_294629316_1%22%2C%22D_294629316_2%22%2C%22D_294629316_3%22%2C%22D_294629316_4%22%2C%22D_294629316_5%22%2C%22D_294629316_6%22%2C%22D_294629316_7%22%2C%22D_294629316_8%22)", + "someSelected(%22D_164707243_1%22%2C%22D_164707243_2%22%2C%22D_164707243_3%22%2C%22D_164707243_4%22%2C%22D_164707243_5%22%2C%22D_164707243_6%22%2C%22D_164707243_7%22%2C%22D_164707243_8%22)", + "someSelected(%22D_771426895_1%22%2C%22D_771426895_2%22%2C%22D_771426895_3%22%2C%22D_771426895_4%22%2C%22D_771426895_5%22%2C%22D_771426895_6%22%2C%22D_771426895_7%22%2C%22D_771426895_8%22)", + "someSelected(%22D_818310825_1%22%2C%22D_818310825_2%22%2C%22D_818310825_3%22%2C%22D_818310825_4%22%2C%22D_818310825_5%22%2C%22D_818310825_6%22%2C%22D_818310825_7%22%2C%22D_818310825_8%22)", + "someSelected(%22D_843593800_1%22%2C%22D_843593800_2%22%2C%22D_843593800_3%22%2C%22D_843593800_4%22%2C%22D_843593800_5%22%2C%22D_843593800_6%22%2C%22D_843593800_7%22%2C%22D_843593800_8%22)", + "someSelected(%22D_175385712_1%22%2C%22D_175385712_2%22%2C%22D_175385712_3%22%2C%22D_175385712_4%22%2C%22D_175385712_5%22%2C%22D_175385712_6%22%2C%22D_175385712_7%22%2C%22D_175385712_8%22)", + "someSelected(%22D_772143730_1%22%2C%22D_772143730_2%22%2C%22D_772143730_3%22%2C%22D_772143730_4%22%2C%22D_772143730_5%22%2C%22D_772143730_6%22%2C%22D_772143730_7%22%2C%22D_772143730_8%22)", + "someSelected(%22D_602102163_1%22%2C%22D_602102163_2%22%2C%22D_602102163_3%22%2C%22D_602102163_4%22%2C%22D_602102163_5%22%2C%22D_602102163_6%22%2C%22D_602102163_7%22%2C%22D_602102163_8%22)", + "equals(equals(D_605063358,353358909),false)", + "equals(D_605063358,353358909)" + ], + "sitesByScope": { + "grid-inline": 8, + "grid-row": 23, + "inline": 557, + "question": 265 + }, + "sitesByAttribute": { + "data-displayif": 23, + "displayif": 830 + } + }, + "grids": [ + { + "questionId": "D_738219521", + "questionIndex": 142, + "rowQuestionIds": [ + "D_666840938", + "D_575237218", + "D_976863738", + "D_392301875", + "D_576358766", + "D_767711152", + "D_888898065", + "D_509170471" + ], + "rowCount": 8, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "162693263", + "924926068", + "417208949", + "797736697", + "480609810", + "485011582", + "865134801", + "667010122", + "648960871" + ] + }, + { + "questionId": "D_252017075", + "questionIndex": 143, + "rowQuestionIds": [ + "D_359443374", + "D_257564920", + "D_670036093", + "D_106272739" + ], + "rowCount": 4, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "503218834", + "759356722", + "668407984", + "448069154", + "485163252", + "160036380" + ] + }, + { + "questionId": "D_633553324", + "questionIndex": 281, + "rowQuestionIds": [ + "D_294629316", + "D_164707243", + "D_771426895", + "D_818310825", + "D_843593800", + "D_175385712", + "D_772143730", + "D_602102163" + ], + "rowCount": 8, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "265550580", + "950039557", + "402048066", + "522395860", + "756073829", + "858624942", + "424768954", + "687445652", + "333682419" + ] + }, + { + "questionId": "D_470862706", + "questionIndex": 282, + "rowQuestionIds": [ + "D_912659087", + "D_643512687", + "D_688123102", + "D_356133766", + "D_690918725", + "D_178609656", + "D_261957180", + "D_715827646" + ], + "rowCount": 8, + "responseTypes": [ + "checkbox" + ], + "responseValues": [ + "789689151", + "663253668", + "104676242", + "137733407" + ] + } + ], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 314, + "processorQuestionCount": 305, + "processedQuestionCount": 305, + "renderedFormCount": 305, + "controlCount": 2017, + "responseControlCount": 1047, + "explicitTransitionCount": 254, + "sequentialAdjacencyCount": 304, + "resolvedExplicitTransitionCount": 254, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 853, + "gridQuestionCount": 4, + "gridRowCount": 28, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 654 + } + }, + { + "schemaVersion": 1, + "module": "module3", + "locale": "es", + "language": "es", + "path": "prod/module3Spanish.txt", + "sha256": "4c78a6b2f3db419e87c7701b938a30c56c87c0c4ae2864d9eeb33e16a207e3b8", + "questName": "D_965707586", + "version": "1.6", + "authoredMarkerCount": 314, + "runtimeQuestionIds": [ + "INTROM3", + "INTROSMO", + "D_947205597?", + "D_763164658?", + "D_194557808?", + "D_790436165?", + "D_639684251?", + "D_798549704?", + "D_227439141?", + "D_318569032?", + "D_204884007?", + "D_400969127?", + "D_820220019?", + "D_304657762?", + "D_815776236?", + "D_560293868?", + "D_399659169?", + "D_667002790?", + "D_534351312?", + "D_594608533?", + "D_923371868?", + "D_445537380?", + "D_387489930?", + "D_493642768?", + "D_821629868?", + "D_434034366?", + "D_842088582?", + "D_624111331?", + "D_761037053?", + "D_550244580?", + "D_751046675?", + "D_238422161?", + "D_716554850?", + "D_724079256?", + "D_360277949?", + "D_242276545?", + "D_183546626?", + "D_982470672?", + "D_333072838?", + "D_388614168?", + "D_656911826?", + "D_370901901?", + "D_240089798?", + "D_536216847?", + "D_622394149?", + "D_442002787?", + "D_208578552?", + "D_480155628?", + "D_640944113?", + "D_866159532?", + "D_182431332?", + "D_241771440?", + "D_814115676?", + "D_564438246?", + "D_789271762?", + "D_622210148?", + "D_457290610?", + "D_997412869?", + "D_395480458?", + "D_674378360?", + "D_780721084?", + "D_287715042?", + "D_145078867?", + "D_598954337?", + "D_103566006?", + "D_254689566?", + "D_951151270?", + "D_237415094?", + "D_868868325?", + "D_243519559?", + "D_365370279?", + "D_645681293?", + "D_440364083?", + "D_306320432?", + "D_213679054?", + "D_257300783?", + "D_101710639?", + "D_344631681?", + "D_872821562?", + "D_344583659?", + "D_671380198?", + "D_785139115?", + "D_549400618?", + "D_394049992?", + "D_673842048?", + "D_568113091?", + "D_537807075?", + "D_960332453?", + "D_495592561?", + "D_705282587?", + "D_133396976?", + "D_628770824?", + "D_558707243?", + "D_929034795?", + "D_995220236?", + "D_551301510?", + "D_981755099?", + "D_127871793?", + "D_154603497?", + "D_472007171?", + "D_787047261?", + "D_915293401?", + "D_268407776?", + "D_938333920?", + "D_585702271?", + "D_827661413?", + "D_356470028?", + "D_720305356?", + "D_951901114?", + "D_471435289?", + "D_445712879?", + "D_620425840?", + "D_798627028?", + "D_584608368?", + "D_921623945?", + "D_370253256?", + "D_470096941?", + "D_544356746?", + "D_559388168?", + "D_450151555?", + "D_546410473?", + "D_458395129?", + "D_845122623?", + "D_679300202?", + "D_146877593?", + "D_780685299?", + "D_311569789?", + "D_652477674?", + "D_780767323?", + "D_385490512?", + "D_119378795?", + "D_286598574?", + "D_689339933?", + "D_812430894?", + "D_178242940?", + "D_501545129?", + "D_197309242?", + "D_550850568?", + "D_277284423?", + "D_127038003?", + "D_337810964?", + "D_334292580?", + "D_738219521", + "D_252017075", + "INTROMAR", + "D_830608495?", + "SMMAR", + "D_319397722?", + "D_210016366?", + "D_116080663?", + "D_503058092?", + "D_180308733?", + "D_831873859?", + "D_594280517?", + "D_863664828?", + "D_129677435?", + "D_930208825?", + "D_719293094?", + "D_722122662?", + "D_556963634?", + "D_492742957?", + "D_377064836?", + "D_258291510?", + "D_175995366?", + "D_643099118?", + "D_864290328?", + "D_386950237?", + "D_480217113?", + "D_645361463?", + "D_882838859?", + "D_524914900?", + "D_140848765?", + "D_378254382?", + "D_891825638?", + "D_444759994?", + "D_746817928?", + "D_992757226?", + "D_405178123?", + "D_698314386?", + "D_363377579?", + "D_964154290?", + "D_171050898?", + "D_606675249?", + "D_411960217?", + "D_755923078?", + "D_381268397?", + "D_723763329?", + "D_724990284?", + "D_383748300?", + "D_199612020?", + "D_755298453?", + "D_777877159?", + "D_680697711?", + "D_325229459?", + "D_116510981?", + "D_942945860?", + "D_521073718?", + "D_859228803?", + "D_589885595?", + "D_659140794?", + "D_445187084?", + "D_142164107?", + "D_695423703?", + "D_816891201?", + "D_177252178?", + "D_116014097?", + "D_562595294?", + "D_268240612?", + "D_446121108?", + "D_319252189?", + "D_822964046?", + "D_878281875?", + "D_989594002?", + "D_596004621?", + "D_459096272?", + "D_586306068?", + "D_101170268?", + "D_908399883?", + "D_653198444?", + "D_742544044?", + "D_921663542?", + "D_818380721?", + "D_179510070?", + "D_700173707?", + "D_259481608?", + "D_786517174?", + "D_276575533?", + "D_891996278?", + "D_238953261?", + "D_517100968?", + "D_810324917?", + "D_922708844?", + "D_336810811?", + "D_925215135?", + "D_402300898?", + "D_677733128?", + "D_702729897?", + "D_795265404?", + "D_432310123?", + "D_355689185?", + "D_766791333?", + "D_742254559?", + "D_420155119?", + "D_532755074?", + "D_681586194?", + "D_370352501?", + "D_970325871?", + "D_536166591?", + "D_119257304?", + "D_933417196?", + "D_937550939?", + "D_258703325?", + "D_585819411?", + "D_265469878?", + "D_349510816?", + "D_375227733?", + "D_752795304?", + "D_417552256?", + "D_963040791?", + "D_685659661?", + "D_511145980?", + "D_227784207?", + "INTROALC", + "D_448968121?", + "D_429228540?", + "D_250456537?", + "D_556837046?", + "D_338467033?", + "D_480426504?", + "D_789159346?", + "D_447720598?", + "D_726847824?", + "D_481662464?", + "D_411088265?", + "D_880067330?", + "D_178665310?", + "D_242987943?", + "D_228752045?", + "D_103045461?", + "D_254739443?", + "ALCLIFE1", + "D_633553324", + "D_470862706", + "INTROSE", + "D_863593410?", + "D_525152373?", + "D_146319128?", + "D_910501158?", + "D_345457702?", + "D_711858159?", + "D_467751479?", + "D_858858333?", + "D_795761911?", + "D_662762705?", + "D_463908980?", + "D_605063358?", + "D_648216681?", + "D_466473224?", + "EYECOLORINTRO", + "D_857219333?", + "D_384562783?", + "D_394410256?", + "D_524971659?", + "D_352986465?", + "END" + ], + "responseControlsByType": { + "checkbox": 73, + "number": 142, + "radio": 823, + "text": 9 + }, + "explicitTransitions": { + "targets": [ + "D_337810964", + "D_624111331", + "D_194557808", + "D_798549704", + "D_304657762", + "D_227439141", + "D_318569032", + "D_204884007", + "D_400969127", + "D_820220019", + "D_560293868", + "D_182431332", + "D_761037053", + "D_238422161", + "D_982470672", + "D_716554850", + "D_724079256", + "D_360277949", + "D_242276545", + "D_183546626", + "D_388614168", + "D_306320432", + "D_241771440", + "D_789271762", + "D_780721084", + "D_622210148", + "D_457290610", + "D_997412869", + "D_395480458", + "D_674378360", + "D_145078867", + "D_981755099", + "D_213679054", + "D_344631681", + "D_394049992", + "D_872821562", + "D_344583659", + "D_671380198", + "D_785139115", + "D_549400618", + "D_568113091", + "D_559388168", + "D_127871793", + "D_787047261", + "D_356470028", + "D_915293401", + "D_268407776", + "D_938333920", + "D_585702271", + "D_827661413", + "D_951901114", + "D_450151555", + "D_845122623", + "D_780767323", + "D_679300202", + "D_146877593", + "D_780685299", + "D_311569789", + "D_652477674", + "D_119378795", + "D_738219521", + "INTROALC", + "D_524914900", + "D_210016366", + "D_180308733", + "D_719293094", + "D_831873859", + "D_594280517", + "D_863664828", + "D_129677435", + "D_930208825", + "D_377064836", + "D_556963634", + "D_325229459", + "D_140848765", + "D_444759994", + "D_964154290", + "D_746817928", + "D_992757226", + "D_405178123", + "D_698314386", + "D_363377579", + "D_755923078", + "D_606675249", + "D_101170268", + "D_116510981", + "D_859228803", + "D_816891201", + "D_589885595", + "D_659140794", + "D_445187084", + "D_142164107", + "D_695423703", + "D_268240612", + "D_116014097", + "D_355689185", + "D_908399883", + "D_921663542", + "D_276575533", + "D_818380721", + "D_179510070", + "D_700173707", + "D_259481608", + "D_786517174", + "D_810324917", + "D_238953261", + "D_766791333", + "D_532755074", + "D_933417196", + "D_681586194", + "D_370352501", + "D_970325871", + "D_536166591", + "D_119257304", + "D_265469878", + "D_258703325", + "D_429228540", + "INTROSE", + "D_250456537", + "D_447720598", + "D_480426504", + "ALCLIFE1", + "D_254739443", + "D_795761911", + "EYECOLORINTRO", + "D_463908980", + "D_466473224", + "D_648216681" + ], + "byKind": { + "default": 23, + "no-response": 42, + "response": 189 + }, + "byResolution": { + "exact": 254 + }, + "triggerTypes": { + "hidden": 65, + "radio": 189 + }, + "triggerValues": [ + "151488193", + "805449318", + "486319890", + "132232896", + "419415087", + "299561721", + "716761013", + "804785430", + "317567178", + "484055234", + "802197176", + "104430631", + "353358909", + "417208949", + "797736697", + "480609810", + "485011582", + "865134801", + "667010122", + "648960871", + "102445389", + "388196732", + "649327523", + "587052987", + "838336013" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_947205597,712653855)", + "doesNotExist('D_798549704') or valueEquals('D_798549704',317567178)", + "valueIsOneOf('D_798549704',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_639684251,804785430),and(or(or(equals(D_639684251,716761013),equals(D_639684251,299561721)),equals(D_639684251,419415087)),and(equals(D_798549704,484055234),equals(D_400969127,353358909)))),and(or(or(equals(D_639684251,716761013),equals(D_639684251,299561721)),equals(D_639684251,419415087)),and(equals(D_798549704,802197176),equals(D_400969127,353358909)))),1),equals(D_947205597,712653855))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",18)<=17 or valueOrDefault(\"D_204884007\",18)<=17)))", + "valueOrDefault('D_408696162',18)<=17", + "valueOrDefault('D_408696162',1)> 17", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,17),17))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,17),17))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,17))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",25)<=24 and valueOrDefault(\"D_204884007\",17)>=18)))", + "valueOrDefault('D_408696162',1)>=18 and valueOrDefault('D_408696162',25)<=24", + "valueOrDefault('D_408696162',19)< 18", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,24),24))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,24),24))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,24))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",30)<=29 and valueOrDefault(\"D_204884007\",24)>=25)))", + "valueOrDefault('D_408696162',1)>=25 and valueOrDefault('D_408696162',30)<=29", + "valueOrDefault('D_408696162',26)< 25", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,29),29))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,29),29))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,29))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",40)<=39 and valueOrDefault(\"D_204884007\",29)>=30)))", + "valueOrDefault('D_408696162',1)>30 and valueOrDefault('D_408696162',40)<=39", + "valueOrDefault('D_408696162',31)< 30", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,39),39))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,39),39))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,39))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",50)<=49 and valueOrDefault(\"D_204884007\",39)>=40)))", + "valueOrDefault('D_408696162',1)>=40 and valueOrDefault('D_408696162',50)<=49", + "valueOrDefault('D_408696162',41)< 40", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,49),49))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,49),49))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,49))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",60)<=59 and valueOrDefault(\"D_204884007\",49)>=50)))", + "valueOrDefault('D_408696162',1)>=50 and valueOrDefault('D_408696162',60)<=59", + "valueOrDefault('D_408696162',51)< 50", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,59),59))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,59),59))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,59))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",70)<=69 and valueOrDefault(\"D_204884007\",59)>=60)))", + "valueOrDefault('D_408696162',1)>=60 and valueOrDefault('D_408696162',70)<=69", + "valueOrDefault('D_408696162',61)< 60", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),lessThan(isDefined(D_204884007,69),69))", + "and(and(equals(D_400969127,353358909),doesNotEqual(isDefined(D_204884007,-1),-1)),greaterThanOrEqual(isDefined(D_204884007,69),69))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_400969127,353358909),equals(isDefined(D_204884007,-1),-1)),greaterThan(age,69))", + "(exists(\"D_408696162\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_639684251\",804785430)) and (valueOrDefault(\"D_408696162\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_408696162\",\"D_204884007\") and ((valueEquals(\"D_763164658\",132232896) and valueEquals(\"D_400969127\",353358909)) and (valueOrDefault(\"D_408696162\",69)>=70 or valueOrDefault(\"D_204884007\",69)>=70)))", + "valueOrDefault('age',1)>=70 and valueOrDefault('D_408696162',1)<70", + "valueOrDefault('D_408696162',1)>70", + "equals(D_947205597,706254326)", + "doesNotExist('D_238422161') or valueEquals('D_238422161',317567178)", + "valueIsOneOf('D_238422161',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_751046675,804785430),and(or(or(equals(D_751046675,716761013),equals(D_751046675,299561721)),equals(D_751046675,419415087)),and(equals(D_238422161,484055234),equals(D_242276545,353358909)))),and(or(or(equals(D_751046675,716761013),equals(D_751046675,299561721)),equals(D_751046675,419415087)),and(equals(D_238422161,802197176),equals(D_242276545,353358909)))),1),equals(D_947205597,706254326))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",18)<=17 or valueOrDefault(\"D_360277949\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_517801904,-1),0)", + "lessThan(isDefined(D_517801904,-1),0)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,17),17))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,17),17))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,17))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",25)<=24 and valueOrDefault(\"D_360277949\",17)>=18)))", + "valueOrDefault('D_517801904',1)>=18 and valueOrDefault('D_517801904',1)<=24", + "lessThan(isDefined(D_517801904,-1),18)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,24),24))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,24),24))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,24))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",30)<=29 and valueOrDefault(\"D_360277949\",24)>=25)))", + "valueOrDefault('D_517801904',1)>=25 and valueOrDefault('D_517801904',30)<=29", + "lessThan(isDefined(D_517801904,-1),25)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,29),29))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,29),29))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,29))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",40)<=39 and valueOrDefault(\"D_360277949\",29)>=30)))", + "valueOrDefault('D_517801904',1)>30 and valueOrDefault('D_517801904',40)<=39", + "lessThan(isDefined(D_517801904,-1),30)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,39),39))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,39),39))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,39))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",50)<=49 and valueOrDefault(\"D_360277949\",39)>=40)))", + "valueOrDefault('D_517801904',1)>=40 and valueOrDefault('D_517801904',50)<=49", + "lessThan(isDefined(D_517801904,-1),40)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,49),49))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,49),49))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,49))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",60)<=59 and valueOrDefault(\"D_360277949\",49)>=50)))", + "valueOrDefault('D_517801904',1)>=50 and valueOrDefault('D_517801904',60)<=59", + "lessThan(isDefined(D_517801904,-1),50)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,59),59))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,59),59))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,59))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",70)<=69 and valueOrDefault(\"D_360277949\",59)>=60)))", + "valueOrDefault('D_517801904',1)>=60 and valueOrDefault('D_517801904',70)<=69", + "lessThan(isDefined(D_517801904,-1),60)", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),lessThan(isDefined(D_360277949,69),69))", + "and(and(equals(D_242276545,353358909),doesNotEqual(isDefined(D_360277949,-1),-1)),greaterThanOrEqual(isDefined(D_360277949,69),69))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_242276545,353358909),equals(isDefined(D_360277949,-1),-1)),greaterThan(age,69))", + "(exists(\"D_517801904\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_751046675\",804785430)) and (valueOrDefault(\"D_517801904\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_517801904\",\"D_360277949\") and ((valueEquals(\"D_624111331\",132232896) and valueEquals(\"D_242276545\",353358909)) and (valueOrDefault(\"D_517801904\",69)>=70 or valueOrDefault(\"D_360277949\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_517801904,-1),70)", + "lessThan(isDefined(D_517801904,-1),70)", + "equals(D_947205597,198133418)", + "doesNotExist('D_789271762') or valueEquals('D_789271762',317567178)", + "valueIsOneOf('D_789271762',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_564438246,804785430),and(or(or(equals(D_564438246,716761013),equals(D_564438246,299561721)),equals(D_564438246,419415087)),and(equals(D_789271762,484055234),equals(D_395480458,353358909)))),and(or(or(equals(D_564438246,716761013),equals(D_564438246,299561721)),equals(D_564438246,419415087)),and(equals(D_789271762,802197176),equals(D_395480458,353358909)))),1),equals(D_947205597,198133418))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",18)<=17 or valueOrDefault(\"D_997412869\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),0)", + "lessThan(isDefined(D_851145096,-1),0)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,17),17))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,17),17))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,17))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",25)<=24 and valueOrDefault(\"D_997412869\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),18)", + "lessThan(isDefined(D_851145096,-1),18)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,24),24))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,24),24))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,24))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",30)<=29 and valueOrDefault(\"D_997412869\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),25)", + "lessThan(isDefined(D_851145096,-1),25)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,29),29))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,29),29))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,29))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",40)<=39 and valueOrDefault(\"D_997412869\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),30)", + "lessThan(isDefined(D_851145096,-1),30)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,39),39))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,39),39))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,39))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",50)<=49 and valueOrDefault(\"D_997412869\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),40)", + "lessThan(isDefined(D_851145096,-1),40)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,49),49))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,49),49))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,49))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",60)<=59 and valueOrDefault(\"D_997412869\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),50)", + "lessThan(isDefined(D_851145096,-1),50)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,59),59))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,59),59))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,59))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",70)<=69 and valueOrDefault(\"D_997412869\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),60)", + "lessThan(isDefined(D_851145096,-1),60)", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),lessThan(isDefined(D_997412869,69),69))", + "and(and(equals(D_395480458,353358909),doesNotEqual(isDefined(D_997412869,-1),-1)),greaterThanOrEqual(isDefined(D_997412869,69),69))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_395480458,353358909),equals(isDefined(D_997412869,-1),-1)),greaterThan(age,69))", + "(exists(\"D_851145096\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_564438246\",804785430)) and (valueOrDefault(\"D_851145096\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_851145096\",\"D_997412869\") and ((valueEquals(\"D_182431332\",132232896) and valueEquals(\"D_395480458\",353358909)) and (valueOrDefault(\"D_851145096\",69)>=70 or valueOrDefault(\"D_997412869\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_851145096,-1),70)", + "lessThan(isDefined(D_851145096,-1),70)", + "equals(D_947205597,817381897)", + "doesNotExist('D_344631681') or valueEquals('D_344631681',317567178)", + "valueIsOneOf('D_344631681',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_101710639,804785430),and(or(or(equals(D_101710639,716761013),equals(D_101710639,299561721)),equals(D_101710639,419415087)),and(equals(D_344631681,484055234),equals(D_785139115,353358909)))),and(or(or(equals(D_101710639,716761013),equals(D_101710639,299561721)),equals(D_101710639,419415087)),and(equals(D_344631681,802197176),equals(D_785139115,353358909)))),1),equals(D_947205597,817381897))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",18)<=17 or valueOrDefault(\"D_671380198\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),0)", + "lessThan(isDefined(D_424527685,-1),0)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,17),17))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,17),17))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,17))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",25)<=24 and valueOrDefault(\"D_671380198\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),18)", + "lessThan(isDefined(D_424527685,-1),18)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,24),24))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,24),24))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,24))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",30)<=29 and valueOrDefault(\"D_671380198\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),25)", + "lessThan(isDefined(D_424527685,-1),25)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,29),29))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,29),29))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,29))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",40)<=39 and valueOrDefault(\"D_671380198\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),30)", + "lessThan(isDefined(D_424527685,-1),30)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,39),39))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,39),39))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,39))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",50)<=49 and valueOrDefault(\"D_671380198\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),40)", + "lessThan(isDefined(D_424527685,-1),40)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,49),49))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,49),49))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,49))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",60)<=59 and valueOrDefault(\"D_671380198\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),50)", + "lessThan(isDefined(D_424527685,-1),50)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,59),59))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,59),59))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,59))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",70)<=69 and valueOrDefault(\"D_671380198\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),60)", + "lessThan(isDefined(D_424527685,-1),60)", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),lessThan(isDefined(D_671380198,69),69))", + "and(and(equals(D_785139115,353358909),doesNotEqual(isDefined(D_671380198,-1),-1)),greaterThanOrEqual(isDefined(D_671380198,69),69))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_785139115,353358909),equals(isDefined(D_671380198,-1),-1)),greaterThan(age,69))", + "(exists(\"D_424527685\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_101710639\",804785430)) and (valueOrDefault(\"D_424527685\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_424527685\",\"D_671380198\") and ((valueEquals(\"D_306320432\",132232896) and valueEquals(\"D_785139115\",353358909)) and (valueOrDefault(\"D_424527685\",69)>=70 or valueOrDefault(\"D_671380198\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_424527685,-1),70)", + "lessThan(isDefined(D_424527685,-1),70)", + "equals(D_947205597,539648641)", + "doesNotExist('D_787047261') or valueEquals('D_787047261',317567178)", + "valueIsOneOf('D_787047261',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_472007171,804785430),and(or(or(equals(D_472007171,716761013),equals(D_472007171,299561721)),equals(D_472007171,419415087)),and(equals(D_787047261,484055234),equals(D_585702271,353358909)))),and(or(or(equals(D_472007171,716761013),equals(D_472007171,299561721)),equals(D_472007171,419415087)),and(equals(D_787047261,802197176),equals(D_585702271,353358909)))),1),equals(D_947205597,539648641))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",18)<=17 or valueOrDefault(\"D_938333920\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),0)", + "lessThan(isDefined(D_234430294,-1),0)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,17),17))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,17),17))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,17))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",25)<=24 and valueOrDefault(\"D_938333920\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),18)", + "lessThan(isDefined(D_234430294,-1),18)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,24),24))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,24),24))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,24))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",30)<=29 and valueOrDefault(\"D_938333920\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),25)", + "lessThan(isDefined(D_234430294,-1),25)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,29),29))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,29),29))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,29))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",40)<=39 and valueOrDefault(\"D_938333920\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),30)", + "lessThan(isDefined(D_234430294,-1),30)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,39),39))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,39),39))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,39))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",50)<=49 and valueOrDefault(\"D_938333920\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),40)", + "lessThan(isDefined(D_234430294,-1),40)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,49),49))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,49),49))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,49))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",60)<=59 and valueOrDefault(\"D_938333920\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),50)", + "lessThan(isDefined(D_234430294,-1),50)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,59),59))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,59),59))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,59))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",70)<=69 and valueOrDefault(\"D_938333920\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),60)", + "lessThan(isDefined(D_234430294,-1),60)", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),lessThan(isDefined(D_938333920,69),69))", + "and(and(equals(D_585702271,353358909),doesNotEqual(isDefined(D_938333920,-1),-1)),greaterThanOrEqual(isDefined(D_938333920,69),69))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_585702271,353358909),equals(isDefined(D_938333920,-1),-1)),greaterThan(age,69))", + "(exists(\"D_234430294\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_472007171\",804785430)) and (valueOrDefault(\"D_234430294\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_234430294\",\"D_938333920\") and ((valueEquals(\"D_981755099\",132232896) and valueEquals(\"D_585702271\",353358909)) and (valueOrDefault(\"D_234430294\",69)>=70 or valueOrDefault(\"D_938333920\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_234430294,-1),70)", + "lessThan(isDefined(D_234430294,-1),70)", + "equals(D_947205597,686310465)", + "doesNotExist('D_845122623') or valueEquals('D_845122623',317567178)", + "valueIsOneOf('D_845122623',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_458395129,804785430),and(or(or(equals(D_458395129,716761013),equals(D_458395129,299561721)),equals(D_458395129,419415087)),and(equals(D_845122623,484055234),equals(D_311569789,353358909)))),and(or(or(equals(D_458395129,716761013),equals(D_458395129,299561721)),equals(D_458395129,419415087)),and(equals(D_845122623,802197176),equals(D_311569789,353358909)))),1),equals(D_947205597,686310465))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",18)<=17 or valueOrDefault(\"D_780685299\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),0)", + "lessThan(isDefined(D_663551714,-1),0)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,17),17))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,17),17))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,17))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",25)<=24 and valueOrDefault(\"D_780685299\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),18)", + "lessThan(isDefined(D_663551714,-1),18)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,24),24))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,24),24))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,24))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",30)<=29 and valueOrDefault(\"D_780685299\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),25)", + "lessThan(isDefined(D_663551714,-1),25)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,29),29))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,29),29))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,29))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",40)<=39 and valueOrDefault(\"D_780685299\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),30)", + "lessThan(isDefined(D_663551714,-1),30)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,39),39))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,39),39))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,39))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",50)<=49 and valueOrDefault(\"D_780685299\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),40)", + "lessThan(isDefined(D_663551714,-1),40)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,49),49))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,49),49))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,49))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",60)<=59 and valueOrDefault(\"D_780685299\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),50)", + "lessThan(isDefined(D_663551714,-1),50)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,59),59))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,59),59))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,59))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",70)<=69 and valueOrDefault(\"D_780685299\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),60)", + "lessThan(isDefined(D_663551714,-1),60)", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),lessThan(isDefined(D_780685299,69),69))", + "and(and(equals(D_311569789,353358909),doesNotEqual(isDefined(D_780685299,-1),-1)),greaterThanOrEqual(isDefined(D_780685299,69),69))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_311569789,353358909),equals(isDefined(D_780685299,-1),-1)),greaterThan(age,69))", + "(exists(\"D_663551714\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_458395129\",804785430)) and (valueOrDefault(\"D_663551714\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_663551714\",\"D_780685299\") and ((valueEquals(\"D_559388168\",132232896) and valueEquals(\"D_311569789\",353358909)) and (valueOrDefault(\"D_663551714\",69)>=70 or valueOrDefault(\"D_780685299\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_663551714,-1),70)", + "lessThan(isDefined(D_663551714,-1),70)", + "greaterThan(difference(age%2C2)%2C18)", + "greaterThan(difference(age%2C2)%2C25)", + "greaterThan(difference(age%2C2)%2C30)", + "greaterThan(difference(age%2C2)%2C40)", + "greaterThan(difference(age%2C2)%2C50)", + "greaterThan(difference(age%2C2)%2C60)", + "greaterThanOrEqual(age%2C70)", + "equals(D_830608495,760521319)", + "doesNotExist('D_180308733') or valueEquals('D_180308733',317567178)", + "valueIsOneOf('D_180308733',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_503058092,804785430),and(or(or(equals(D_503058092,716761013),equals(D_503058092,299561721)),equals(D_503058092,419415087)),and(equals(D_180308733,484055234),equals(D_129677435,353358909)))),and(or(or(equals(D_503058092,716761013),equals(D_503058092,299561721)),equals(D_503058092,419415087)),and(equals(D_180308733,802197176),equals(D_129677435,353358909)))),1),equals(D_830608495,760521319))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",18)<=17 or valueOrDefault(\"D_863664828\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),0)", + "lessThan(isDefined(D_889949861,-1),0)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,17),17))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,17),17))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,17))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",25)<=24 and valueOrDefault(\"D_863664828\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),18)", + "lessThan(isDefined(D_889949861,-1),18)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,24),24))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,24),24))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,24))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",30)<=29 and valueOrDefault(\"D_863664828\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),25)", + "lessThan(isDefined(D_889949861,-1),25)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,29),29))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,29),29))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,29))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",40)<=39 and valueOrDefault(\"D_863664828\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),30)", + "lessThan(isDefined(D_889949861,-1),30)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,39),39))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,39),39))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,39))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",50)<=49 and valueOrDefault(\"D_863664828\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),40)", + "lessThan(isDefined(D_889949861,-1),40)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,49),49))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,49),49))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,49))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",60)<=59 and valueOrDefault(\"D_863664828\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),50)", + "lessThan(isDefined(D_889949861,-1),50)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,59),59))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,59),59))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,59))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",70)<=69 and valueOrDefault(\"D_863664828\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),60)", + "lessThan(isDefined(D_889949861,-1),60)", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),lessThan(isDefined(D_863664828,69),69))", + "and(and(equals(D_129677435,353358909),doesNotEqual(isDefined(D_863664828,-1),-1)),greaterThanOrEqual(isDefined(D_863664828,69),69))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_129677435,353358909),equals(isDefined(D_863664828,-1),-1)),greaterThan(age,69))", + "(exists(\"D_889949861\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_503058092\",804785430)) and (valueOrDefault(\"D_889949861\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_889949861\",\"D_863664828\") and ((valueEquals(\"D_319397722\",132232896) and valueEquals(\"D_129677435\",353358909)) and (valueOrDefault(\"D_889949861\",69)>=70 or valueOrDefault(\"D_863664828\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_889949861,-1),70)", + "lessThan(isDefined(D_889949861,-1),70)", + "equals(D_830608495,158841370)", + "doesNotExist('D_444759994') or valueEquals('D_444759994',317567178)", + "valueIsOneOf('D_444759994',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_891825638,804785430),and(or(or(equals(D_891825638,716761013),equals(D_891825638,299561721)),equals(D_891825638,419415087)),and(equals(D_444759994,484055234),equals(D_698314386,353358909)))),and(or(or(equals(D_891825638,716761013),equals(D_891825638,299561721)),equals(D_891825638,419415087)),and(equals(D_444759994,802197176),equals(D_698314386,353358909)))),1),equals(D_830608495,158841370))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",18)<=17 or valueOrDefault(\"D_405178123\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),0)", + "lessThan(isDefined(D_628818510,-1),0)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,17),17))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,17),17))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,17))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",25)<=24 and valueOrDefault(\"D_405178123\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),18)", + "lessThan(isDefined(D_628818510,-1),18)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,24),24))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,24),24))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,24))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",30)<=29 and valueOrDefault(\"D_405178123\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),25)", + "lessThan(isDefined(D_628818510,-1),25)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,29),29))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,29),29))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,29))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",40)<=39 and valueOrDefault(\"D_405178123\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),30)", + "lessThan(isDefined(D_628818510,-1),30)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,39),39))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,39),39))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,39))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",50)<=49 and valueOrDefault(\"D_405178123\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),40)", + "lessThan(isDefined(D_628818510,-1),40)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,49),49))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,49),49))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,49))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",60)<=59 and valueOrDefault(\"D_405178123\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),50)", + "lessThan(isDefined(D_628818510,-1),50)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,59),59))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,59),59))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,59))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",70)<=69 and valueOrDefault(\"D_405178123\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),60)", + "lessThan(isDefined(D_628818510,-1),60)", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),lessThan(isDefined(D_405178123,69),69))", + "and(and(equals(D_698314386,353358909),doesNotEqual(isDefined(D_405178123,-1),-1)),greaterThanOrEqual(isDefined(D_405178123,69),69))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_698314386,353358909),equals(isDefined(D_405178123,-1),-1)),greaterThan(age,69))", + "(exists(\"D_628818510\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_891825638\",804785430)) and (valueOrDefault(\"D_628818510\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_628818510\",\"D_405178123\") and ((valueEquals(\"D_524914900\",132232896) and valueEquals(\"D_698314386\",353358909)) and (valueOrDefault(\"D_628818510\",69)>=70 or valueOrDefault(\"D_405178123\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_628818510,-1),70)", + "lessThan(isDefined(D_628818510,-1),70)", + "equals(D_830608495,349034127)", + "valueIsOneOf('D_859228803',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_521073718,804785430),and(or(or(equals(D_521073718,716761013),equals(D_521073718,299561721)),equals(D_521073718,419415087)),and(equals(D_859228803,484055234),equals(D_142164107,353358909)))),and(or(or(equals(D_521073718,716761013),equals(D_521073718,299561721)),equals(D_521073718,419415087)),and(equals(D_859228803,802197176),equals(D_142164107,353358909)))),1),equals(D_830608495,349034127))", + "doesNotExist('D_859228803') or valueEquals('D_859228803',317567178)", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",18)<=17 or valueOrDefault(\"D_445187084\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),0)", + "lessThan(isDefined(D_742716427,-1),0)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,17),17))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,17),17))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,17))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",25)<=24 and valueOrDefault(\"D_445187084\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),18)", + "lessThan(isDefined(D_742716427,-1),18)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,24),24))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,24),24))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,24))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",30)<=29 and valueOrDefault(\"D_445187084\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),25)", + "lessThan(isDefined(D_742716427,-1),25)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,29),29))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,29),29))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,29))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",40)<=39 and valueOrDefault(\"D_445187084\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),30)", + "lessThan(isDefined(D_742716427,-1),30)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,39),39))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,39),39))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,39))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",50)<=49 and valueOrDefault(\"D_445187084\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),40)", + "lessThan(isDefined(D_742716427,-1),40)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,49),49))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,49),49))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,49))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",60)<=59 and valueOrDefault(\"D_445187084\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),50)", + "lessThan(isDefined(D_742716427,-1),50)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,59),59))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,59),59))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,59))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",70)<=69 and valueOrDefault(\"D_445187084\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),60)", + "lessThan(isDefined(D_742716427,-1),60)", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),lessThan(isDefined(D_445187084,69),69))", + "and(and(equals(D_142164107,353358909),doesNotEqual(isDefined(D_445187084,-1),-1)),greaterThanOrEqual(isDefined(D_445187084,69),69))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_142164107,353358909),equals(isDefined(D_445187084,-1),-1)),greaterThan(age,69))", + "(exists(\"D_742716427\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_521073718\",804785430)) and (valueOrDefault(\"D_742716427\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_742716427\",\"D_445187084\") and ((valueEquals(\"D_325229459\",132232896) and valueEquals(\"D_142164107\",353358909)) and (valueOrDefault(\"D_742716427\",69)>=70 or valueOrDefault(\"D_445187084\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_742716427,-1),70)", + "lessThan(isDefined(D_742716427,-1),70)", + "equals(D_830608495,713594719)", + "doesNotExist('D_921663542') or valueEquals('D_921663542',317567178)", + "valueIsOneOf('D_921663542',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_742544044,804785430),and(or(or(equals(D_742544044,716761013),equals(D_742544044,299561721)),equals(D_742544044,419415087)),and(equals(D_921663542,484055234),equals(D_259481608,353358909)))),and(or(or(equals(D_742544044,716761013),equals(D_742544044,299561721)),equals(D_742544044,419415087)),and(equals(D_921663542,802197176),equals(D_259481608,353358909)))),1),equals(D_830608495,713594719))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",18)<=17 or valueOrDefault(\"D_700173707\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),0)", + "lessThan(isDefined(D_622843252,-1),0)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,17),17))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,17),17))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,17))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,17))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",25)<=24 and valueOrDefault(\"D_700173707\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),18)", + "lessThan(isDefined(D_622843252,-1),18)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,24),24))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,24),24))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,24))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",30)<=29 and valueOrDefault(\"D_700173707\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),25)", + "lessThan(isDefined(D_622843252,-1),25)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,29),29))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,29),29))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,29))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",40)<=39 and valueOrDefault(\"D_700173707\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),30)", + "lessThan(isDefined(D_622843252,-1),30)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,39),39))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,39),39))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,39))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",50)<=49 and valueOrDefault(\"D_700173707\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),40)", + "lessThan(isDefined(D_622843252,-1),40)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,49),49))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,49),49))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,49))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",60)<=59 and valueOrDefault(\"D_700173707\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),50)", + "lessThan(isDefined(D_622843252,-1),50)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,59),59))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,59),59))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,59))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",70)<=69 and valueOrDefault(\"D_700173707\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),60)", + "lessThan(isDefined(D_622843252,-1),60)", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),lessThan(isDefined(D_700173707,69),69))", + "and(and(equals(D_259481608,353358909),doesNotEqual(isDefined(D_700173707,-1),-1)),greaterThanOrEqual(isDefined(D_700173707,69),69))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_259481608,353358909),equals(isDefined(D_700173707,-1),-1)),greaterThan(age,69))", + "(exists(\"D_622843252\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_742544044\",804785430)) and (valueOrDefault(\"D_622843252\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_622843252\",\"D_700173707\") and ((valueEquals(\"D_101170268\",132232896) and valueEquals(\"D_259481608\",353358909)) and (valueOrDefault(\"D_622843252\",69)>=70 or valueOrDefault(\"D_700173707\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_622843252,-1),70)", + "lessThan(isDefined(D_622843252,-1),70)", + "equals(D_830608495,675129470)", + "doesNotExist('D_532755074') or valueEquals('D_532755074',317567178)", + "valueIsOneOf('D_532755074',484055234,802197176)", + "and(doesNotEqual(or(or(equals(D_420155119,804785430),and(or(or(equals(D_420155119,716761013),equals(D_420155119,299561721)),equals(D_420155119,419415087)),and(equals(D_532755074,484055234),equals(D_536166591,353358909)))),and(or(or(equals(D_420155119,716761013),equals(D_420155119,299561721)),equals(D_420155119,419415087)),and(equals(D_532755074,802197176),equals(D_536166591,353358909)))),1),equals(D_830608495,675129470))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",18)<=17 or valueOrDefault(\"age\",18)<=17))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",18)<=17 or valueOrDefault(\"D_970325871\",18)<=17)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),0)", + "lessThan(isDefined(D_185168695,-1),0)", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",25)<=24 and valueOrDefault(\"age\",17)>=18))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",25)<=24 and valueOrDefault(\"D_970325871\",17)>=18)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),18)", + "lessThan(isDefined(D_185168695,-1),18)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,24),24))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,24),24))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,24))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,24))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",30)<=29 and valueOrDefault(\"age\",24)>=25))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",30)<=29 and valueOrDefault(\"D_970325871\",24)>=25)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),25)", + "lessThan(isDefined(D_185168695,-1),25)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,29),29))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,29),29))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,29))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,29))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",40)<=39 and valueOrDefault(\"age\",29)>=30))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",40)<=39 and valueOrDefault(\"D_970325871\",29)>=30)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),30)", + "lessThan(isDefined(D_185168695,-1),30)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,39),39))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,39),39))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,39))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,39))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",50)<=49 and valueOrDefault(\"age\",39)>=40))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",50)<=49 and valueOrDefault(\"D_970325871\",39)>=40)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),40)", + "lessThan(isDefined(D_185168695,-1),40)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,49),49))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,49),49))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,49))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,49))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",60)<=59 and valueOrDefault(\"age\",49)>=50))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",60)<=59 and valueOrDefault(\"D_970325871\",49)>=50)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),50)", + "lessThan(isDefined(D_185168695,-1),50)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,59),59))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,59),59))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,59))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,59))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",70)<=69 and valueOrDefault(\"age\",59)>=60))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",70)<=69 and valueOrDefault(\"D_970325871\",59)>=60)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),60)", + "lessThan(isDefined(D_185168695,-1),60)", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),lessThan(isDefined(D_970325871,69),69))", + "and(and(equals(D_536166591,353358909),doesNotEqual(isDefined(D_970325871,-1),-1)),greaterThanOrEqual(isDefined(D_970325871,69),69))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),lessThanOrEqual(age,69))", + "and(or(doesNotEqual(D_536166591,353358909),equals(isDefined(D_970325871,-1),-1)),greaterThan(age,69))", + "(exists(\"D_185168695\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_420155119\",804785430)) and (valueOrDefault(\"D_185168695\",69)>=70 or valueOrDefault(\"age\",69)>=70))) or (allExist(\"D_185168695\",\"D_970325871\") and ((valueEquals(\"D_355689185\",132232896) and valueEquals(\"D_536166591\",353358909)) and (valueOrDefault(\"D_185168695\",69)>=70 or valueOrDefault(\"D_970325871\",69)>=70)))", + "greaterThanOrEqual(isDefined(D_185168695,-1),70)", + "lessThan(isDefined(D_185168695,-1),70)", + "equals(D_447720598,549079588)", + "equals(D_447720598,896953195)", + "equals(D_447720598,889023234)", + "equals(D_447720598,181769837)", + "valueEquals(\"D_429228540\",132232896) and valueLength(\"D_141874857\")>=1 and valueEquals(\"D_338467033\",353358909)", + "equals(D_407056417,536341288)", + "equals(D_407056417,654207589)", + "valueEquals(\"D_429228540\",132232896) and exists(\"D_141874857\") and (valueEquals(\"D_338467033\",353358909) or (valueEquals(\"D_338467033\",104430631) and exists(\"D_480426504\")))", + "valueEquals(\"D_429228540\",132232896) and ((exists(\"D_141874857\") and valueEquals(\"D_338467033\",353358909)) or (valueEquals(\"D_338467033\",104430631) and exists(\"D_480426504\")))", + "doesNotEqual(isDefined(D_141874857,-1),-1)", + "equals(isDefined(D_141874857,-1),-1)", + "doesNotExist(\"D_480426504\")", + "exists(\"D_480426504\")", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D0%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D17", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D18%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D24", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D25%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D29", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D30%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D39", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D40%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D49", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D50%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D59", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D60%20and%20valueOrDefault(%22D_141874857%22%2C%22D_250456537%22)%3C%3D69", + "valueOrDefault(%22D_480426504%22%2C%22age%22)%3E%3D70", + "someSelected(\"D_294629316_1\",\"D_294629316_2\",\"D_294629316_3\",\"D_294629316_4\",\"D_294629316_5\",\"D_294629316_6\",\"D_294629316_7\",\"D_294629316_8\",\"D_164707243_1\",\"D_164707243_2\",\"D_164707243_3\",\"D_164707243_4\",\"D_164707243_5\",\"D_164707243_6\",\"D_164707243_7\",\"D_164707243_8\",\"D_771426895_1\",\"D_771426895_2\",\"D_771426895_3\",\"D_771426895_4\",\"D_771426895_5\",\"D_771426895_6\",\"D_771426895_7\",\"D_771426895_8\",\"D_818310825_1\",\"D_818310825_2\",\"D_818310825_3\",\"D_818310825_4\",\"D_818310825_5\",\"D_818310825_6\",\"D_818310825_7\",\"D_818310825_8\",\"D_843593800_1\",\"D_843593800_2\",\"D_843593800_3\",\"D_843593800_4\",\"D_843593800_5\",\"D_843593800_6\",\"D_843593800_7\",\"D_843593800_8\",\"D_175385712_1\",\"D_175385712_2\",\"D_175385712_3\",\"D_175385712_4\",\"D_175385712_5\",\"D_175385712_6\",\"D_175385712_7\",\"D_175385712_8\",\"D_772143730_1\",\"D_772143730_2\",\"D_772143730_3\",\"D_772143730_4\",\"D_772143730_5\",\"D_772143730_6\",\"D_772143730_7\",\"D_772143730_8\",\"D_602102163_1\",\"D_602102163_2\",\"D_602102163_3\",\"D_602102163_4\",\"D_602102163_5\",\"D_602102163_6\",\"D_602102163_7\",\"D_602102163_8\")", + "someSelected(%22D_294629316_1%22%2C%22D_294629316_2%22%2C%22D_294629316_3%22%2C%22D_294629316_4%22%2C%22D_294629316_5%22%2C%22D_294629316_6%22%2C%22D_294629316_7%22%2C%22D_294629316_8%22)", + "someSelected(%22D_164707243_1%22%2C%22D_164707243_2%22%2C%22D_164707243_3%22%2C%22D_164707243_4%22%2C%22D_164707243_5%22%2C%22D_164707243_6%22%2C%22D_164707243_7%22%2C%22D_164707243_8%22)", + "someSelected(%22D_771426895_1%22%2C%22D_771426895_2%22%2C%22D_771426895_3%22%2C%22D_771426895_4%22%2C%22D_771426895_5%22%2C%22D_771426895_6%22%2C%22D_771426895_7%22%2C%22D_771426895_8%22)", + "someSelected(%22D_818310825_1%22%2C%22D_818310825_2%22%2C%22D_818310825_3%22%2C%22D_818310825_4%22%2C%22D_818310825_5%22%2C%22D_818310825_6%22%2C%22D_818310825_7%22%2C%22D_818310825_8%22)", + "someSelected(%22D_843593800_1%22%2C%22D_843593800_2%22%2C%22D_843593800_3%22%2C%22D_843593800_4%22%2C%22D_843593800_5%22%2C%22D_843593800_6%22%2C%22D_843593800_7%22%2C%22D_843593800_8%22)", + "someSelected(%22D_175385712_1%22%2C%22D_175385712_2%22%2C%22D_175385712_3%22%2C%22D_175385712_4%22%2C%22D_175385712_5%22%2C%22D_175385712_6%22%2C%22D_175385712_7%22%2C%22D_175385712_8%22)", + "someSelected(%22D_772143730_1%22%2C%22D_772143730_2%22%2C%22D_772143730_3%22%2C%22D_772143730_4%22%2C%22D_772143730_5%22%2C%22D_772143730_6%22%2C%22D_772143730_7%22%2C%22D_772143730_8%22)", + "someSelected(%22D_602102163_1%22%2C%22D_602102163_2%22%2C%22D_602102163_3%22%2C%22D_602102163_4%22%2C%22D_602102163_5%22%2C%22D_602102163_6%22%2C%22D_602102163_7%22%2C%22D_602102163_8%22)", + "equals(equals(D_605063358,353358909),false)", + "equals(D_605063358,353358909)" + ], + "sitesByScope": { + "grid-inline": 8, + "grid-row": 23, + "inline": 556, + "question": 265 + }, + "sitesByAttribute": { + "data-displayif": 23, + "displayif": 829 + } + }, + "grids": [ + { + "questionId": "D_738219521", + "questionIndex": 142, + "rowQuestionIds": [ + "D_666840938", + "D_575237218", + "D_976863738", + "D_392301875", + "D_576358766", + "D_767711152", + "D_888898065", + "D_509170471" + ], + "rowCount": 8, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "162693263", + "924926068", + "417208949", + "797736697", + "480609810", + "485011582", + "865134801", + "667010122", + "648960871" + ] + }, + { + "questionId": "D_252017075", + "questionIndex": 143, + "rowQuestionIds": [ + "D_359443374", + "D_257564920", + "D_670036093", + "D_106272739" + ], + "rowCount": 4, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "503218834", + "759356722", + "668407984", + "448069154", + "485163252", + "160036380" + ] + }, + { + "questionId": "D_633553324", + "questionIndex": 281, + "rowQuestionIds": [ + "D_294629316", + "D_164707243", + "D_771426895", + "D_818310825", + "D_843593800", + "D_175385712", + "D_772143730", + "D_602102163" + ], + "rowCount": 8, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "265550580", + "950039557", + "402048066", + "522395860", + "756073829", + "858624942", + "424768954", + "687445652", + "333682419" + ] + }, + { + "questionId": "D_470862706", + "questionIndex": 282, + "rowQuestionIds": [ + "D_912659087", + "D_643512687", + "D_688123102", + "D_356133766", + "D_690918725", + "D_178609656", + "D_261957180", + "D_715827646" + ], + "rowCount": 8, + "responseTypes": [ + "checkbox" + ], + "responseValues": [ + "789689151", + "663253668", + "104676242", + "137733407" + ] + } + ], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 314, + "processorQuestionCount": 305, + "processedQuestionCount": 305, + "renderedFormCount": 305, + "controlCount": 2017, + "responseControlCount": 1047, + "explicitTransitionCount": 254, + "sequentialAdjacencyCount": 304, + "resolvedExplicitTransitionCount": 254, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 852, + "gridQuestionCount": 4, + "gridRowCount": 28, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 651 + } + }, + { + "schemaVersion": 1, + "module": "module4", + "locale": "en", + "language": "en", + "path": "prod/module4.txt", + "sha256": "008faf8420a7a657692c7e04a3615f171c53f675411fd3fd049f329a62124fe4", + "questName": "D_716117817", + "version": "2.0", + "authoredMarkerCount": 367, + "runtimeQuestionIds": [ + "INTROM4", + "INTRORH", + "D_121490150?", + "D_920576363?", + "D_804504024?", + "HOMEADD4_1", + "D_290969423?", + "D_869829679?", + "D_574985342?", + "D_444145120?", + "D_398762737?", + "HOMEADD4_2", + "D_862052821?", + "D_845483079?", + "D_828086036?", + "D_752101258?", + "D_961572487?", + "HOMEADD4_3", + "D_593146348?", + "D_736086261?", + "D_680046149?", + "D_879180101?", + "D_746604821?", + "HOMEADD4_4", + "D_983592172?", + "D_294308065?", + "D_274189667?", + "D_212343294?", + "D_298296694?", + "HOMEADD4_5", + "D_776406200?", + "D_385583361?", + "D_113930886?", + "D_255474241?", + "D_205492848?", + "HOMEADD4_6", + "D_135207939?", + "D_768802173?", + "D_809728747?", + "D_201906316?", + "D_581231591?", + "HOMEADD4_7", + "D_647612167?", + "D_150560299?", + "D_539057792?", + "D_864213677?", + "D_123104885?", + "HOMEADD4_8", + "D_532944666?", + "D_122054737?", + "D_537011756?", + "D_964853797?", + "D_890661849?", + "HOMEADD4_9", + "D_548863580?", + "D_948492967?", + "D_171937884?", + "D_787064287?", + "D_902193418?", + "HOMEADD4_10", + "D_124320444?", + "D_805353966?", + "D_828766803?", + "D_878688378?", + "D_440597740?", + "HOMEADD4_11", + "HOMEADDSUM_11", + "D_590222838?", + "D_728155643?", + "D_623452399?", + "D_380621340?", + "D_876443676?", + "D_999694720?", + "D_270587543?", + "D_849066624?", + "D_195167143?", + "D_425315696?", + "D_495330716?", + "D_529608184?", + "D_783797179?", + "D_234731641?", + "D_243695994?", + "D_664561394?", + "D_562190570?", + "D_450154625?", + "D_790359238?", + "D_812161236?", + "D_925747671?", + "D_964437163?", + "INTROHOMEWTR", + "D_958419506?", + "D_725408440?", + "D_539909957?", + "D_505863509?", + "D_651233069?", + "D_250486386?", + "D_957717014?", + "D_809387606?", + "D_726654963?", + "D_195367894?", + "D_428044531?", + "D_934184033?", + "D_986989731?", + "D_441498892?", + "D_508187475?", + "D_665978055?", + "D_113557709?", + "D_933017499?", + "D_386487941?", + "D_268661616?", + "D_494698740?", + "D_211740798?", + "D_318621931?", + "D_542086156?", + "D_190307069?", + "D_697751634?", + "D_740535024?", + "D_154170916?", + "D_277745320?", + "D_825109070?", + "D_337574535?", + "D_535386940?", + "D_927932321?", + "INTROSH", + "D_342677547?", + "D_710449106?", + "D_376408004?", + "D_173413183?", + "D_200086909?", + "SEASADD4_1", + "D_576956950?", + "D_512143997?", + "D_279093430?", + "D_657986901?", + "D_509526051?", + "SEASADD4_2", + "D_463952618?", + "D_982650994?", + "D_143927994?", + "D_564684946?", + "D_370121390?", + "SEASADD4_3", + "D_959488634?", + "D_945794974?", + "D_935378391?", + "D_558981691?", + "D_192184336?", + "SEASADD4_4", + "D_696017690?", + "D_663869343?", + "D_320166033?", + "D_194944818?", + "D_763354979?", + "SEASADD4_5", + "D_424272506?", + "D_275978701?", + "D_383535171?", + "D_508587741?", + "D_355179190?", + "SEASADD4_6", + "D_484550481?", + "D_195803565?", + "D_133566757?", + "D_293954660?", + "D_851731394?", + "SEASADD4_7", + "D_773680071?", + "D_282326355?", + "D_509553290?", + "D_268612977?", + "D_172669345?", + "SEASADD4_8", + "D_348817644?", + "D_141249692?", + "D_239279719?", + "D_216096388?", + "D_921998144?", + "SEASADD4_9", + "D_800194290?", + "D_494968690?", + "D_778711683?", + "D_757983656?", + "D_670316988?", + "SEASADD4_10", + "SEASADDSUM_10", + "D_379754686?", + "D_975198123?", + "D_860269869?", + "D_963795928?", + "D_778495585?", + "D_928112898?", + "D_775038507?", + "D_829751791?", + "D_412195193?", + "D_778721228?", + "D_914325712?", + "D_750000285?", + "D_504158362?", + "D_682457230?", + "D_849979952?", + "D_696972918?", + "D_404118353?", + "D_552298163?", + "D_921090200?", + "D_806530984?", + "D_710443293?", + "D_134624195?", + "D_613251957?", + "D_878144094?", + "D_274396191?", + "D_437395872?", + "D_709755471?", + "D_940513931?", + "D_288109261?", + "D_701803756?", + "INTROSEASWTR", + "D_426743354?", + "D_809682067?", + "D_598478268?", + "D_170035952?", + "D_734596352?", + "D_823509509?", + "D_771505558?", + "D_524305502?", + "D_149476435?", + "D_105941645?", + "D_120942783?", + "D_719647239?", + "D_322665488?", + "D_167987013?", + "D_953722451?", + "D_118738120?", + "D_340877879?", + "D_541565665?", + "D_728256340?", + "D_976597527?", + "D_274257975?", + "D_603945794?", + "D_277312204?", + "D_636020848?", + "D_304685106?", + "D_201989756?", + "D_296694684?", + "D_274780951?", + "D_491337167?", + "D_321932473?", + "INTROCH", + "D_277348878?", + "D_720221117?", + "D_632533534?", + "D_264797252?", + "D_469914719?", + "CHILDADD4", + "D_191221569?", + "D_752015272?", + "D_714365367?", + "D_665593888?", + "TAPWTRINTRO", + "D_285545471?", + "D_831438612?", + "D_961178879?", + "D_138116092?", + "D_393682471?", + "D_364303962?", + "D_944517297?", + "D_302947409?", + "COMINTRO", + "INTROWORKPOSTPAN", + "D_699873889?", + "D_213152981?", + "D_858178137?", + "D_871276836?", + "D_660218333?", + "D_263959391?", + "D_986316055?", + "D_116032363?", + "CURWORKPOSTPANCONFIRM", + "D_870675371?", + "D_788065155?", + "D_421586693?", + "D_733638576?", + "D_166943843?", + "D_173155090?", + "D_234136107?", + "D_666629067?", + "D_614208066?", + "D_308634850?", + "D_799598595?", + "D_532260562?", + "D_242268237?", + "D_568581510?", + "D_277953784?", + "D_510872569?", + "INTROCURWORK", + "D_694113343?", + "D_576417612?", + "D_374639590?", + "INTROPREPANDIFF_INTROPREWORK_SKIP", + "INTROPREPANDIFF_SKIP", + "INTROPREPANDIFF", + "D_970148613?", + "D_774087638?", + "D_635780118?", + "D_828801156?", + "D_211472150?", + "D_596318751?", + "D_263588196?", + "D_845811202?", + "CURWORKCONFIRM", + "D_380579855?", + "D_138397553?", + "D_635467479?", + "D_440093675?", + "D_155199731?", + "D_181422361?", + "D_333362587?", + "D_839454121?", + "D_684542266?", + "D_203943120?", + "D_404697804?", + "D_786253125?", + "D_186636914?", + "D_936393993?", + "D_168563469?", + "D_219893040?", + "INTROPREWORK_SKIP", + "INTROPREWORK", + "D_995620555?", + "D_980007418?", + "D_992180692?", + "D_350394531?", + "D_733317111?", + "PREWORKCONFIRM", + "D_569375463?", + "D_822005593?", + "D_311891586?", + "D_968388901?", + "D_335218615?", + "D_564557026?", + "D_839233937?", + "D_251048648?", + "D_679430807?", + "D_475144270?", + "INTROCURSCH", + "D_449752653?", + "D_959371875?", + "D_914696832?", + "D_668887646?", + "D_443679537?", + "CURSCHCONFIRM", + "D_224209278?", + "D_659744749?", + "D_404863614?", + "D_135529881?", + "D_136660779?", + "D_107050954?", + "D_559488982?", + "D_940631293?", + "D_496801729?", + "D_230528407?", + "D_345355061?", + "D_219317801?", + "D_705673076?", + "D_333852852?", + "D_776580384?", + "D_849811593?", + "END" + ], + "responseControlsByType": { + "checkbox": 156, + "number": 72, + "radio": 1054, + "text": 395 + }, + "explicitTransitions": { + "targets": [ + "D_574985342", + "D_590222838", + "D_828086036", + "D_680046149", + "D_274189667", + "D_113930886", + "D_809728747", + "D_539057792", + "D_537011756", + "D_171937884", + "D_828766803", + "D_539909957", + "D_725408440", + "D_250486386", + "D_651233069", + "D_726654963", + "D_809387606", + "D_934184033", + "D_428044531", + "D_508187475", + "D_441498892", + "D_933017499", + "D_113557709", + "D_494698740", + "D_268661616", + "D_542086156", + "D_318621931", + "D_740535024", + "D_697751634", + "D_825109070", + "D_277745320", + "D_927932321", + "D_535386940", + "INTROSH", + "D_376408004", + "D_710449106", + "INTROCH", + "D_279093430", + "D_379754686", + "D_143927994", + "D_935378391", + "D_320166033", + "D_383535171", + "D_133566757", + "D_509553290", + "D_239279719", + "D_778711683", + "D_598478268", + "D_809682067", + "D_823509509", + "D_734596352", + "D_149476435", + "D_524305502", + "D_719647239", + "D_120942783", + "D_953722451", + "D_167987013", + "D_541565665", + "D_340877879", + "D_274257975", + "D_976597527", + "D_636020848", + "D_277312204", + "D_296694684", + "D_201989756", + "D_321932473", + "D_491337167", + "D_720221117", + "D_632533534", + "CHILDADD4", + "D_302947409", + "INTROCURWORK", + "D_666629067", + "D_799598595", + "D_510872569", + "D_532260562", + "INTROPREWORK_SKIP", + "INTROPREPANDIFF_INTROPREWORK_SKIP", + "D_774087638", + "INTROCURSCH", + "D_635467479", + "D_839454121", + "D_404697804", + "D_219893040", + "D_786253125", + "D_980007418", + "D_992180692", + "D_335218615", + "D_839233937", + "D_251048648", + "D_475144270", + "D_679430807", + "END", + "D_940631293", + "D_345355061", + "D_849811593", + "D_219317801" + ], + "byKind": { + "default": 6, + "no-response": 76, + "response": 177 + }, + "byResolution": { + "exact": 256, + "terminal": 3 + }, + "triggerTypes": { + "hidden": 82, + "radio": 177 + }, + "triggerValues": [ + "353358909", + "580377720", + "901693169", + "519767819", + "388690303", + "807835037", + "178420302", + "104430631", + "614395648", + "991158851", + "778052314", + "751569137", + "684900118", + "816566846" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "or(or(isNotDefined(D_303500597,false),isNotDefined(D_195068098,false)),or(isNotDefined(D_202784871,false),isNotDefined(D_831127170,false)))", + "exists('D_303500597')", + "doesNotExist(\"D_303500597\")", + "exists('D_195068098')", + "doesNotExist(\"D_195068098\")", + "exists('D_202784871')", + "doesNotExist(\"D_202784871\")", + "exists('D_831127170')", + "doesNotExist(\"D_831127170\")", + "noneExist(\"D_255248624\",\"D_945532934\") and someExist(\"D_725583683\",\"D_917021073\",\"D_970000442\",\"D_500100435\",\"D_303500597\",\"D_195068098\",\"D_202784871\",\"D_831127170\")", + "noneExist('D_255248624','D_945532934','D_469838242','D_303500597','D_725583683','D_195068098','D_917021073','D_202784871','D_970000442','D_831127170','D_500100435')", + "someExist('D_255248624','D_945532934','D_469838242','D_303500597','D_725583683','D_195068098','D_917021073','D_202784871','D_970000442','D_831127170','D_500100435')", + "or(or(isNotDefined(D_536516743,false),isNotDefined(D_283900560,false)),or(isNotDefined(D_467947502,false),isNotDefined(D_368486703,false)))", + "exists('D_536516743')", + "doesNotExist(\"D_536516743\")", + "exists('D_283900560')", + "doesNotExist(\"D_283900560\")", + "exists('D_467947502')", + "doesNotExist(\"D_467947502\")", + "exists('D_368486703')", + "doesNotExist(\"D_368486703\")", + "displayif=noneExist(\"D_985267931\",\"D_111275683\") and someExist(\"D_288498031\",\"D_195845897\",\"D_936129960\",\"D_924583345\",\"D_536516743\",\"D_283900560\",\"D_467947502\",\"D_368486703\")", + "noneExist('D_985267931','D_111275683','D_129226572','D_536516743','D_288498031','D_283900560','D_195845897','D_467947502','D_936129960','D_368486703','D_924583345')", + "someExist('D_985267931','D_111275683','D_129226572','D_536516743','D_288498031','D_283900560','D_195845897','D_467947502','D_936129960','D_368486703','D_924583345')", + "or(or(isNotDefined(D_588699608,false),isNotDefined(D_544692849,false)),or(isNotDefined(D_335435992,false),isNotDefined(D_337088272,false)))", + "exists('D_588699608')", + "doesNotExist(\"D_588699608\")", + "exists('D_544692849')", + "doesNotExist(\"D_544692849\")", + "exists('D_335435992')", + "doesNotExist(\"D_335435992\")", + "exists('D_337088272')", + "doesNotExist(\"D_337088272\")", + "noneExist(\"D_875706715\",\"D_645150792\") and someExist(\"D_648495207\",\"D_300933270\",\"D_649864362\",\"D_723108194\",\"D_588699608\",\"D_544692849\",\"D_335435992\",\"D_337088272\")", + "noneExist('D_875706715','D_645150792','D_585360350','D_588699608','D_648495207','D_544692849','D_300933270','D_335435992','D_649864362','D_337088272','D_723108194')", + "someExist('D_875706715','D_645150792','D_585360350','D_588699608','D_648495207','D_544692849','D_300933270','D_335435992','D_649864362','D_337088272','D_723108194')", + "or(or(isNotDefined(D_930511603,false),isNotDefined(D_756548442,false)),or(isNotDefined(D_455968200,false),isNotDefined(D_728704613,false)))", + "exists('D_930511603')", + "doesNotExist(\"D_930511603\")", + "exists('D_756548442')", + "doesNotExist(\"D_756548442\")", + "exists('D_455968200')", + "doesNotExist(\"D_455968200\")", + "exists('D_728704613')", + "doesNotExist(\"D_728704613\")", + "noneExist(\"D_130174162\",\"D_563832508\") and someExist(\"D_931999203\",\"D_486511102\",\"D_267027102\",\"D_734345879\",\"D_930511603\",\"D_756548442\",\"D_455968200\",\"D_728704613\")", + "noneExist('D_130174162','D_563832508','D_817839081','D_930511603','D_931999203','D_756548442','D_486511102','D_455968200','D_267027102','D_728704613','D_734345879')", + "someExist('D_130174162','D_563832508','D_817839081','D_930511603','D_931999203','D_756548442','D_486511102','D_455968200','D_267027102','D_728704613','D_734345879')", + "or(or(isNotDefined(D_742177990,false),isNotDefined(D_843508307,false)),or(isNotDefined(D_554901696,false),isNotDefined(D_819429013,false)))", + "exists('D_742177990')", + "doesNotExist(\"D_742177990\")", + "exists('D_843508307')", + "doesNotExist(\"D_843508307\")", + "exists('D_554901696')", + "doesNotExist(\"D_554901696\")", + "exists('D_819429013')", + "doesNotExist(\"D_819429013\")", + "noneExist(\"D_838725845\",\"D_565515774\") and someExist(\"D_445867902\",\"D_348049244\",\"D_684217044\",\"D_600319581\",\"D_742177990\",\"D_843508307\",\"D_554901696\",\"D_819429013\")", + "noneExist('D_838725845','D_565515774','D_848348504','D_742177990','D_445867902','D_843508307','D_348049244','D_554901696','D_684217044','D_819429013','D_600319581')", + "someExist('D_838725845','D_565515774','D_848348504','D_742177990','D_445867902','D_843508307','D_348049244','D_554901696','D_684217044','D_819429013','D_600319581')", + "or(or(isNotDefined(D_418702418,false),isNotDefined(D_101219440,false)),or(isNotDefined(D_127963610,false),isNotDefined(D_882731998,false)))", + "exists('D_418702418')", + "doesNotExist(\"D_418702418\")", + "exists('D_101219440')", + "doesNotExist(\"D_101219440\")", + "exists('D_127963610')", + "doesNotExist(\"D_127963610\")", + "exists('D_882731998')", + "doesNotExist(\"D_882731998\")", + "displayif=noneExist(\"D_306805272\",\"D_819844467\") and someExist(\"D_218334768\",\"D_394294282\",\"D_803526907\",\"D_941168091\",\"D_418702418\",\"D_101219440\",\"D_127963610\",\"D_882731998\")", + "noneExist('D_306805272','D_819844467','D_164233037','D_418702418','D_218334768','D_101219440','D_394294282','D_127963610','D_803526907','D_882731998','D_941168091')", + "someExist('D_306805272','D_819844467','D_164233037','D_418702418','D_218334768','D_101219440','D_394294282','D_127963610','D_803526907','D_882731998','D_941168091')", + "or(or(isNotDefined(D_703944664,false),isNotDefined(D_390463636,false)),or(isNotDefined(D_256790385,false),isNotDefined(D_915222355,false)))", + "exists('D_703944664')", + "doesNotExist(\"D_703944664\")", + "exists('D_390463636')", + "doesNotExist(\"D_390463636\")", + "exists('D_256790385')", + "doesNotExist(\"D_256790385\")", + "exists('D_915222355')", + "doesNotExist(\"D_915222355\")", + "noneExist(\"D_351559015\",\"D_903490632\") and someExist(\"D_476697171\",\"D_605344820\",\"D_814644814\",\"D_627992821\",\"D_703944664\",\"D_390463636\",\"D_256790385\",\"D_915222355\")", + "noneExist('D_351559015','D_903490632','D_906119853','D_703944664','D_476697171','D_390463636','D_605344820','D_256790385','D_814644814','D_915222355','D_627992821')", + "someExist('D_351559015','D_903490632','D_906119853','D_703944664','D_476697171','D_390463636','D_605344820','D_256790385','D_814644814','D_915222355','D_627992821')", + "or(or(isNotDefined(D_744290061,false),isNotDefined(D_516936572,false)),or(isNotDefined(D_673034401,false),isNotDefined(D_489019597,false)))", + "exists('D_744290061')", + "doesNotExist(\"D_744290061\")", + "exists('D_516936572')", + "doesNotExist(\"D_516936572\")", + "exists('D_673034401')", + "doesNotExist(\"D_673034401\")", + "exists('D_489019597')", + "doesNotExist(\"D_489019597\")", + "noneExist(\"D_893639464\",\"D_438475588\") and someExist(\"D_280877371\",\"D_463064782\",\"D_865310914\",\"D_900377581\",\"D_744290061\",\"D_516936572\",\"D_673034401\",\"D_489019597\")", + "noneExist('D_893639464','D_438475588','D_194165243','D_744290061','D_280877371','D_516936572','D_463064782','D_673034401','D_865310914','D_489019597','D_900377581')", + "someExist('D_893639464','D_438475588','D_194165243','D_744290061','D_280877371','D_516936572','D_463064782','D_673034401','D_865310914','D_489019597','D_900377581')", + "or(or(isNotDefined(D_351559021,false),isNotDefined(D_290370013,false)),or(isNotDefined(D_453691095,false),isNotDefined(D_202104231,false)))", + "exists('D_351559021')", + "doesNotExist(\"D_351559021\")", + "exists('D_290370013')", + "doesNotExist(\"D_290370013\")", + "exists('D_453691095')", + "doesNotExist(\"D_453691095\")", + "exists('D_202104231')", + "doesNotExist(\"D_202104231\")", + "noneExist(\"D_988266183\",\"D_709374950\") and someExist(\"D_548773158\",\"D_487043303\",\"D_659122266\",\"D_388427546\",\"D_351559021\",\"D_290370013\",\"D_453691095\",\"D_202104231\")", + "noneExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546')", + "someExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546')", + "or(or(isNotDefined(D_282089547,false),isNotDefined(D_612617245,false)),or(isNotDefined(D_674024553,false),isNotDefined(D_886247195,false)))", + "exists('D_282089547')", + "doesNotExist(\"D_282089547\")", + "exists('D_612617245')", + "doesNotExist(\"D_612617245\")", + "exists('D_674024553')", + "doesNotExist(\"D_674024553\")", + "exists('D_886247195')", + "doesNotExist(\"D_886247195\")", + "noneExist(\"D_264707783\",\"D_666011940\") and someExist(\"D_891573875\",\"D_862255177\",\"D_972332937\",\"D_429200007\",\"D_282089547\",\"D_612617245\",\"D_674024553\",\"D_886247195\")", + "noneExist('D_264707783','D_666011940','D_981594981','D_282089547','D_891573875','D_612617245','D_862255177','D_674024553','D_972332937','D_886247195','D_429200007')", + "someExist('D_264707783','D_666011940','D_981594981','D_282089547','D_891573875','D_612617245','D_862255177','D_674024553','D_972332937','D_886247195','D_429200007')", + "or(or(isNotDefined(D_309461541,false),isNotDefined(D_789637860,false)),or(isNotDefined(D_795253129,false),isNotDefined(D_780298998,false)))", + "exists('D_309461541')", + "doesNotExist(\"D_309461541\")", + "exists('D_789637860')", + "doesNotExist(\"D_789637860\")", + "exists('D_795253129')", + "doesNotExist(\"D_795253129\")", + "exists('D_780298998')", + "doesNotExist(\"D_780298998\")", + "noneExist(\"D_622968789\",\"D_696874548\") and someExist(\"D_706592013\",\"D_585473282\",\"D_814137809\",\"D_876521406\",\"D_309461541\",\"D_789637860\",\"D_795253129\",\"D_780298998\")", + "noneExist('D_622968789','D_696874548','D_450630128','D_309461541','D_706592013','D_789637860','D_585473282','D_795253129','D_814137809','D_780298998','D_876521406')", + "someExist('D_622968789','D_696874548','D_450630128','D_309461541','D_706592013','D_789637860','D_585473282','D_795253129','D_814137809','D_780298998','D_876521406')", + "or(equals(D_290969423,353358909),or(equals(D_869829679,270752953),or(equals(isNotDefined(D_985267931,\"\"),false),or(equals(isNotDefined(D_111275683,\"\"),false),or(equals(isNotDefined(D_129226572,\"\"),false),or(equals(isNotDefined(D_536516743,\"\"),false),or(equals(isNotDefined(D_288498031,\"\"),false),or(equals(isNotDefined(D_283900560,\"\"),false),or(equals(isNotDefined(D_195845897,\"\"),false),or(equals(isNotDefined(D_467947502,\"\"),false),or(equals(isNotDefined(D_936129960,\"\"),false),or(equals(isNotDefined(D_368486703,\"\"),false),equals(isNotDefined(D_924583345,\"\"),false)))))))))))))", + "or(equals(D_862052821,353358909),or(equals(D_845483079,270752953),or(equals(isNotDefined(D_875706715,\"\"),false),or(equals(isNotDefined(D_645150792,\"\"),false),or(equals(isNotDefined(D_585360350,\"\"),false),or(equals(isNotDefined(D_588699608,\"\"),false),or(equals(isNotDefined(D_648495207,\"\"),false),or(equals(isNotDefined(D_544692849,\"\"),false),or(equals(isNotDefined(D_300933270,\"\"),false),or(equals(isNotDefined(D_335435992,\"\"),false),or(equals(isNotDefined(D_649864362,\"\"),false),or(equals(isNotDefined(D_337088272,\"\"),false),equals(isNotDefined(D_723108194,\"\"),false)))))))))))))", + "or(equals(D_593146348,353358909),or(equals(D_736086261,270752953),or(equals(isNotDefined(D_130174162,\"\"),false),or(equals(isNotDefined(D_563832508,\"\"),false),or(equals(isNotDefined(D_817839081,\"\"),false),or(equals(isNotDefined(D_930511603,\"\"),false),or(equals(isNotDefined(D_931999203,\"\"),false),or(equals(isNotDefined(D_756548442,\"\"),false),or(equals(isNotDefined(D_486511102,\"\"),false),or(equals(isNotDefined(D_455968200,\"\"),false),or(equals(isNotDefined(D_267027102,\"\"),false),or(equals(isNotDefined(D_728704613,\"\"),false),equals(isNotDefined(D_734345879,\"\"),false)))))))))))))", + "or(equals(D_983592172,353358909),or(equals(D_294308065,270752953),or(equals(isNotDefined(D_838725845,\"\"),false),or(equals(isNotDefined(D_565515774,\"\"),false),or(equals(isNotDefined(D_848348504,\"\"),false),or(equals(isNotDefined(D_742177990,\"\"),false),or(equals(isNotDefined(D_445867902,\"\"),false),or(equals(isNotDefined(D_843508307,\"\"),false),or(equals(isNotDefined(D_348049244,\"\"),false),or(equals(isNotDefined(D_554901696,\"\"),false),or(equals(isNotDefined(D_684217044,\"\"),false),or(equals(isNotDefined(D_819429013,\"\"),false),equals(isNotDefined(D_600319581,\"\"),false)))))))))))))", + "or(equals(D_776406200,353358909),or(equals(D_385583361,270752953),or(equals(isNotDefined(D_306805272,\"\"),false),or(equals(isNotDefined(D_819844467,\"\"),false),or(equals(isNotDefined(D_164233037,\"\"),false),or(equals(isNotDefined(D_418702418,\"\"),false),or(equals(isNotDefined(D_218334768,\"\"),false),or(equals(isNotDefined(D_101219440,\"\"),false),or(equals(isNotDefined(D_394294282,\"\"),false),or(equals(isNotDefined(D_127963610,\"\"),false),or(equals(isNotDefined(D_803526907,\"\"),false),or(equals(isNotDefined(D_882731998,\"\"),false),equals(isNotDefined(D_941168091,\"\"),false)))))))))))))", + "or(equals(D_135207939,353358909),or(equals(D_768802173,270752953),or(equals(isNotDefined(D_351559015,\"\"),false),or(equals(isNotDefined(D_903490632,\"\"),false),or(equals(isNotDefined(D_906119853,\"\"),false),or(equals(isNotDefined(D_703944664,\"\"),false),or(equals(isNotDefined(D_476697171,\"\"),false),or(equals(isNotDefined(D_390463636,\"\"),false),or(equals(isNotDefined(D_605344820,\"\"),false),or(equals(isNotDefined(D_256790385,\"\"),false),or(equals(isNotDefined(D_814644814,\"\"),false),or(equals(isNotDefined(D_915222355,\"\"),false),equals(isNotDefined(D_627992821,\"\"),false)))))))))))))", + "or(equals(D_647612167,353358909),or(equals(D_150560299,270752953),or(equals(isNotDefined(D_893639464,\"\"),false),or(equals(isNotDefined(D_438475588,\"\"),false),or(equals(isNotDefined(D_194165243,\"\"),false),or(equals(isNotDefined(D_744290061,\"\"),false),or(equals(isNotDefined(D_280877371,\"\"),false),or(equals(isNotDefined(D_516936572,\"\"),false),or(equals(isNotDefined(D_463064782,\"\"),false),or(equals(isNotDefined(D_673034401,\"\"),false),or(equals(isNotDefined(D_865310914,\"\"),false),or(equals(isNotDefined(D_489019597,\"\"),false),equals(isNotDefined(D_900377581,\"\"),false)))))))))))))", + "or(equals(D_532944666,353358909),or(equals(D_122054737,270752953),or(equals(isNotDefined(D_988266183,\"\"),false),or(equals(isNotDefined(D_709374950,\"\"),false),or(equals(isNotDefined(D_853931010,\"\"),false),or(equals(isNotDefined(D_351559021,\"\"),false),or(equals(isNotDefined(D_548773158,\"\"),false),or(equals(isNotDefined(D_290370013,\"\"),false),or(equals(isNotDefined(D_487043303,\"\"),false),or(equals(isNotDefined(D_453691095,\"\"),false),or(equals(isNotDefined(D_659122266,\"\"),false),or(equals(isNotDefined(D_202104231,\"\"),false),equals(isNotDefined(D_388427546,\"\"),false)))))))))))))", + "or(equals(D_548863580,353358909),or(equals(D_948492967,270752953),or(equals(isNotDefined(D_264707783,\"\"),false),or(equals(isNotDefined(D_666011940,\"\"),false),or(equals(isNotDefined(D_981594981,\"\"),false),or(equals(isNotDefined(D_282089547,\"\"),false),or(equals(isNotDefined(D_891573875,\"\"),false),or(equals(isNotDefined(D_612617245,\"\"),false),or(equals(isNotDefined(D_862255177,\"\"),false),or(equals(isNotDefined(D_674024553,\"\"),false),or(equals(isNotDefined(D_972332937,\"\"),false),or(equals(isNotDefined(D_886247195,\"\"),false),equals(isNotDefined(D_429200007,\"\"),false)))))))))))))", + "or(equals(D_124320444,353358909),or(equals(D_805353966,270752953),or(equals(isNotDefined(D_622968789,\"\"),false),or(equals(isNotDefined(D_696874548,\"\"),false),or(equals(isNotDefined(D_450630128,\"\"),false),or(equals(isNotDefined(D_309461541,\"\"),false),or(equals(isNotDefined(D_706592013,\"\"),false),or(equals(isNotDefined(D_789637860,\"\"),false),or(equals(isNotDefined(D_585473282,\"\"),false),or(equals(isNotDefined(D_795253129,\"\"),false),or(equals(isNotDefined(D_814137809,\"\"),false),or(equals(isNotDefined(D_780298998,\"\"),false),equals(isNotDefined(D_876521406,\"\"),false)))))))))))))", + "or(or(isNotDefined(D_556576930,false),isNotDefined(D_304326324,false)),or(isNotDefined(D_812433386,false),isNotDefined(D_477319994,false)))", + "exists('D_556576930')", + "doesNotExist(\"D_556576930\")", + "exists('D_304326324')", + "doesNotExist(\"D_304326324\")", + "exists('D_812433386')", + "doesNotExist(\"D_812433386\")", + "exists('D_477319994')", + "doesNotExist(\"D_477319994\")", + "noneExist(\"D_234037089\",\"D_416862112\") and someExist(\"D_416620941\",\"D_915859406\",\"D_354833686\",\"D_661148931\",\"D_556576930\",\"D_304326324\",\"D_812433386\",\"D_477319994\")", + "noneExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_661148931')", + "someExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_661148931')", + "or(or(isNotDefined(D_715370929,false),isNotDefined(D_109991481,false)),or(isNotDefined(D_494380686,false),isNotDefined(D_440796912,false)))", + "exists('D_715370929')", + "doesNotExist(\"D_715370929\")", + "exists('D_109991481')", + "doesNotExist(\"D_109991481\")", + "exists('D_494380686')", + "doesNotExist(\"D_494380686\")", + "exists('D_440796912')", + "doesNotExist(\"D_440796912\")", + "noneExist(\"D_476938134\",\"D_561635035\") and someExist(\"D_726739712\",\"D_149514187\",\"D_845446624\",\"D_677739650\",\"D_715370929\",\"D_109991481\",\"D_494380686\",\"D_440796912\")", + "noneExist('D_476938134','D_561635035','D_134210521','D_715370929','D_726739712','D_109991481','D_149514187','D_494380686','D_845446624','D_440796912','D_677739650')", + "someExist('D_476938134','D_561635035','D_134210521','D_715370929','D_726739712','D_109991481','D_149514187','D_494380686','D_845446624','D_440796912','D_677739650')", + "or(or(isNotDefined(D_113352592,false),isNotDefined(D_768114466,false)),or(isNotDefined(D_938180781,false),isNotDefined(D_733365745,false)))", + "exists('D_113352592')", + "doesNotExist(\"D_113352592\")", + "exists('D_768114466')", + "doesNotExist(\"D_768114466\")", + "exists('D_938180781')", + "doesNotExist(\"D_938180781\")", + "exists('D_733365745')", + "doesNotExist(\"D_733365745\")", + "noneExist(\"D_119483547\",\"D_194338739\") and someExist(\"D_148846635\",\"D_192663941\",\"D_245044197\",\"D_261025083\",\"D_113352592\",\"D_768114466\",\"D_938180781\",\"D_733365745\")", + "noneExist('D_119483547','D_194338739','D_387077376','D_113352592','D_148846635','D_768114466','D_192663941','D_938180781','D_245044197','D_733365745','D_261025083')", + "someExist('D_119483547','D_194338739','D_387077376','D_113352592','D_148846635','D_768114466','D_192663941','D_938180781','D_245044197','D_733365745','D_261025083')", + "or(or(isNotDefined(D_733619119,false),isNotDefined(D_843680322,false)),or(isNotDefined(D_716343828,false),isNotDefined(D_497260033,false)))", + "exists('D_733619119')", + "doesNotExist(\"D_733619119\")", + "exists('D_843680322')", + "doesNotExist(\"D_843680322\")", + "exists('D_716343828')", + "doesNotExist(\"D_716343828\")", + "exists('D_497260033')", + "doesNotExist(\"D_497260033\")", + "noneExist(\"D_785588454\",\"D_419659205\") and someExist(\"D_571926996\",\"D_645589113\",\"D_701056236\",\"D_398249766\",\"D_733619119\",\"D_843680322\",\"D_716343828\",\"D_497260033\")", + "noneExist('D_785588454','D_419659205','D_653181757','D_733619119','D_571926996','D_843680322','D_645589113','D_716343828','D_701056236','D_497260033','D_398249766')", + "someExist('D_785588454','D_419659205','D_653181757','D_733619119','D_571926996','D_843680322','D_645589113','D_716343828','D_701056236','D_497260033','D_398249766')", + "or(or(isNotDefined(D_570311888,false),isNotDefined(D_557852952,false)),or(isNotDefined(D_970217879,false),isNotDefined(D_452103273,false)))", + "exists('D_570311888')", + "doesNotExist(\"D_570311888\")", + "exists('D_557852952')", + "doesNotExist(\"D_557852952\")", + "exists('D_970217879')", + "doesNotExist(\"D_970217879\")", + "exists('D_452103273')", + "doesNotExist(\"D_452103273\")", + "displayif=noneExist(\"D_275244758\",\"D_688216428\") and someExist(\"D_101804763\",\"D_502068619\",\"D_787391994\",\"D_540340377\",\"D_570311888\",\"D_557852952\",\"D_970217879\",\"D_452103273\")", + "noneExist('D_275244758','D_688216428','D_843674851','D_570311888','D_101804763','D_557852952','D_502068619','D_970217879','D_787391994','D_452103273','D_540340377')", + "someExist('D_275244758','D_688216428','D_843674851','D_570311888','D_101804763','D_557852952','D_502068619','D_970217879','D_787391994','D_452103273','D_540340377')", + "or(or(isNotDefined(D_888514303,false),isNotDefined(D_905002640,false)),or(isNotDefined(D_687407917,false),isNotDefined(D_932828568,false)))", + "exists('D_888514303')", + "doesNotExist(\"D_888514303\")", + "exists('D_905002640')", + "doesNotExist(\"D_905002640\")", + "exists('D_687407917')", + "doesNotExist(\"D_687407917\")", + "exists('D_932828568')", + "doesNotExist(\"D_932828568\")", + "noneExist(\"D_666445636\",\"D_398622449\") and someExist(\"D_686611963\",\"D_900950849\",\"D_103689435\",\"D_659457234\",\"D_888514303\",\"D_905002640\",\"D_687407917\",\"D_932828568\")", + "noneExist('D_666445636','D_398622449','D_521925072','D_888514303','D_686611963','D_905002640','D_900950849','D_687407917','D_103689435','D_932828568','D_659457234')", + "someExist('D_666445636','D_398622449','D_521925072','D_888514303','D_686611963','D_905002640','D_900950849','D_687407917','D_103689435','D_932828568','D_659457234')", + "or(or(isNotDefined(D_384403974,false),isNotDefined(D_585153023,false)),or(isNotDefined(D_248996395,false),isNotDefined(D_525778327,false)))", + "exists('D_384403974')", + "doesNotExist(\"D_384403974\")", + "exists('D_585153023')", + "doesNotExist(\"D_585153023\")", + "exists('D_248996395')", + "doesNotExist(\"D_248996395\")", + "exists('D_525778327')", + "doesNotExist(\"D_525778327\")", + "noneExist(\"D_199489170\",\"D_605155921\") and someExist(\"D_860984191\",\"D_892150843\",\"D_230376384\",\"D_526462982\",\"D_384403974\",\"D_585153023\",\"D_248996395\",\"D_525778327\")", + "noneExist('D_199489170','D_605155921','D_300476868','D_384403974','D_860984191','D_585153023','D_892150843','D_248996395','D_230376384','D_525778327','D_526462982')", + "someExist('D_199489170','D_605155921','D_300476868','D_384403974','D_860984191','D_585153023','D_892150843','D_248996395','D_230376384','D_525778327','D_526462982')", + "or(or(isNotDefined(D_367684056,false),isNotDefined(D_389478638,false)),or(isNotDefined(D_949478044,false),isNotDefined(D_298170847,false)))", + "exists('D_367684056')", + "doesNotExist(\"D_367684056\")", + "exists('D_389478638')", + "doesNotExist(\"D_389478638\")", + "exists('D_949478044')", + "doesNotExist(\"D_949478044\")", + "exists('D_298170847')", + "doesNotExist(\"D_298170847\")", + "noneExist(\"D_295693777\",\"D_646099557\") and someExist(\"D_599753334\",\"D_467126157\",\"D_421779583\",\"D_587765197\",\"D_367684056\",\"D_389478638\",\"D_949478044\",\"D_298170847\")", + "noneExist('D_295693777','D_646099557','D_886284650','D_367684056','D_599753334','D_389478638','D_467126157','D_949478044','D_421779583','D_298170847','D_587765197')", + "someExist('D_295693777','D_646099557','D_886284650','D_367684056','D_599753334','D_389478638','D_467126157','D_949478044','D_421779583','D_298170847','D_587765197')", + "or(or(isNotDefined(D_711881258,false),isNotDefined(D_390941579,false)),or(isNotDefined(D_737885885,false),isNotDefined(D_603853574,false)))", + "exists('D_711881258')", + "doesNotExist(\"D_711881258\")", + "exists('D_390941579')", + "doesNotExist(\"D_390941579\")", + "exists('D_737885885')", + "doesNotExist(\"D_737885885\")", + "exists('D_603853574')", + "doesNotExist(\"D_603853574\")", + "noneExist(\"D_143093472\",\"D_746619983\") and someExist(\"D_450433102\",\"D_181005197\",\"D_855530921\",\"D_589689090\",\"D_711881258\",\"D_390941579\",\"D_737885885\",\"D_603853574\")", + "noneExist('D_143093472','D_746619983','D_911964974','D_711881258','D_450433102','D_390941579','D_181005197','D_737885885','D_855530921','D_603853574','D_589689090')", + "someExist('D_143093472','D_746619983','D_911964974','D_711881258','D_450433102','D_390941579','D_181005197','D_737885885','D_855530921','D_603853574','D_589689090')", + "or(or(isNotDefined(D_160188014,false),isNotDefined(D_596751155,false)),or(isNotDefined(D_624226136,false),isNotDefined(D_807127029,false)))", + "exists('D_160188014')", + "doesNotExist(\"D_160188014\")", + "exists('D_596751155')", + "doesNotExist(\"D_596751155\")", + "exists('D_624226136')", + "doesNotExist(\"D_624226136\")", + "exists('D_807127029')", + "doesNotExist(\"D_807127029\")", + "noneExist(\"D_117703279\",\"D_734790700\") and someExist(\"D_983038259\",\"D_313586037\",\"D_158186064\",\"D_274940131\",\"D_160188014\",\"D_596751155\",\"D_624226136\",\"D_807127029\")", + "noneExist('D_117703279','D_734790700','D_278164536','D_160188014','D_983038259','D_596751155','D_313586037','D_624226136','D_158186064','D_807127029','D_274940131')", + "someExist('D_117703279','D_734790700','D_278164536','D_160188014','D_983038259','D_596751155','D_313586037','D_624226136','D_158186064','D_807127029','D_274940131')", + "or(equals(D_342677547,353358909),or(equals(D_710449106,991158851),or(equals(isNotDefined(D_234037089,\"\"),false),or(equals(isNotDefined(D_416862112,\"\"),false),or(equals(isNotDefined(D_671149035,\"\"),false),or(equals(isNotDefined(D_556576930,\"\"),false),or(equals(isNotDefined(D_416620941,\"\"),false),or(equals(isNotDefined(D_304326324,\"\"),false),or(equals(isNotDefined(D_915859406,\"\"),false),or(equals(isNotDefined(D_812433386,\"\"),false),or(equals(isNotDefined(D_354833686,\"\"),false),or(equals(isNotDefined(D_477319994,\"\"),false),equals(isNotDefined(D_661148931,\"\"),false)))))))))))))", + "or(equals(D_576956950,353358909),or(equals(D_512143997,171498611),or(equals(isNotDefined(D_476938134,\"\"),false),or(equals(isNotDefined(D_561635035,\"\"),false),or(equals(isNotDefined(D_134210521,\"\"),false),or(equals(isNotDefined(D_715370929,\"\"),false),or(equals(isNotDefined(D_726739712,\"\"),false),or(equals(isNotDefined(D_109991481,\"\"),false),or(equals(isNotDefined(D_149514187,\"\"),false),or(equals(isNotDefined(D_494380686,\"\"),false),or(equals(isNotDefined(D_845446624,\"\"),false),or(equals(isNotDefined(D_440796912,\"\"),false),equals(isNotDefined(D_677739650,\"\"),false)))))))))))))", + "or(equals(D_463952618,353358909),or(equals(D_982650994,171498611),or(equals(isNotDefined(D_119483547,\"\"),false),or(equals(isNotDefined(D_194338739,\"\"),false),or(equals(isNotDefined(D_387077376,\"\"),false),or(equals(isNotDefined(D_113352592,\"\"),false),or(equals(isNotDefined(D_148846635,\"\"),false),or(equals(isNotDefined(D_768114466,\"\"),false),or(equals(isNotDefined(D_192663941,\"\"),false),or(equals(isNotDefined(D_938180781,\"\"),false),or(equals(isNotDefined(D_245044197,\"\"),false),or(equals(isNotDefined(D_733365745,\"\"),false),equals(isNotDefined(D_261025083,\"\"),false)))))))))))))", + "or(equals(D_959488634,353358909),or(equals(D_945794974,171498611),or(equals(isNotDefined(D_785588454,\"\"),false),or(equals(isNotDefined(D_419659205,\"\"),false),or(equals(isNotDefined(D_653181757,\"\"),false),or(equals(isNotDefined(D_733619119,\"\"),false),or(equals(isNotDefined(D_571926996,\"\"),false),or(equals(isNotDefined(D_843680322,\"\"),false),or(equals(isNotDefined(D_645589113,\"\"),false),or(equals(isNotDefined(D_716343828,\"\"),false),or(equals(isNotDefined(D_701056236,\"\"),false),or(equals(isNotDefined(D_497260033,\"\"),false),equals(isNotDefined(D_398249766,\"\"),false)))))))))))))", + "or(equals(D_696017690,353358909),or(equals(D_663869343,171498611),or(equals(isNotDefined(D_275244758,\"\"),false),or(equals(isNotDefined(D_688216428,\"\"),false),or(equals(isNotDefined(D_843674851,\"\"),false),or(equals(isNotDefined(D_570311888,\"\"),false),or(equals(isNotDefined(D_101804763,\"\"),false),or(equals(isNotDefined(D_557852952,\"\"),false),or(equals(isNotDefined(D_502068619,\"\"),false),or(equals(isNotDefined(D_970217879,\"\"),false),or(equals(isNotDefined(D_787391994,\"\"),false),or(equals(isNotDefined(D_452103273,\"\"),false),equals(isNotDefined(D_540340377,\"\"),false)))))))))))))", + "or(equals(D_424272506,353358909),or(equals(D_275978701,171498611),or(equals(isNotDefined(D_666445636,\"\"),false),or(equals(isNotDefined(D_398622449,\"\"),false),or(equals(isNotDefined(D_521925072,\"\"),false),or(equals(isNotDefined(D_888514303,\"\"),false),or(equals(isNotDefined(D_686611963,\"\"),false),or(equals(isNotDefined(D_905002640,\"\"),false),or(equals(isNotDefined(D_900950849,\"\"),false),or(equals(isNotDefined(D_687407917,\"\"),false),or(equals(isNotDefined(D_103689435,\"\"),false),or(equals(isNotDefined(D_932828568,\"\"),false),equals(isNotDefined(D_659457234,\"\"),false)))))))))))))", + "or(equals(D_484550481,353358909),or(equals(D_195803565,171498611),or(equals(isNotDefined(D_199489170,\"\"),false),or(equals(isNotDefined(D_605155921,\"\"),false),or(equals(isNotDefined(D_300476868,\"\"),false),or(equals(isNotDefined(D_384403974,\"\"),false),or(equals(isNotDefined(D_860984191,\"\"),false),or(equals(isNotDefined(D_585153023,\"\"),false),or(equals(isNotDefined(D_892150843,\"\"),false),or(equals(isNotDefined(D_248996395,\"\"),false),or(equals(isNotDefined(D_230376384,\"\"),false),or(equals(isNotDefined(D_525778327,\"\"),false),equals(isNotDefined(D_526462982,\"\"),false)))))))))))))", + "or(equals(D_773680071,353358909),or(equals(D_282326355,171498611),or(equals(isNotDefined(D_295693777,\"\"),false),or(equals(isNotDefined(D_646099557,\"\"),false),or(equals(isNotDefined(D_886284650,\"\"),false),or(equals(isNotDefined(D_367684056,\"\"),false),or(equals(isNotDefined(D_599753334,\"\"),false),or(equals(isNotDefined(D_389478638,\"\"),false),or(equals(isNotDefined(D_467126157,\"\"),false),or(equals(isNotDefined(D_949478044,\"\"),false),or(equals(isNotDefined(D_421779583,\"\"),false),or(equals(isNotDefined(D_298170847,\"\"),false),equals(isNotDefined(D_587765197,\"\"),false)))))))))))))", + "or(equals(D_348817644,353358909),or(equals(D_141249692,171498611),or(equals(isNotDefined(D_143093472,\"\"),false),or(equals(isNotDefined(D_746619983,\"\"),false),or(equals(isNotDefined(D_911964974,\"\"),false),or(equals(isNotDefined(D_711881258,\"\"),false),or(equals(isNotDefined(D_450433102,\"\"),false),or(equals(isNotDefined(D_390941579,\"\"),false),or(equals(isNotDefined(D_181005197,\"\"),false),or(equals(isNotDefined(D_737885885,\"\"),false),or(equals(isNotDefined(D_855530921,\"\"),false),or(equals(isNotDefined(D_603853574,\"\"),false),equals(isNotDefined(D_589689090,\"\"),false)))))))))))))", + "or(equals(D_800194290,353358909),or(equals(D_494968690,171498611),or(equals(isNotDefined(D_117703279,\"\"),false),or(equals(isNotDefined(D_734790700,\"\"),false),or(equals(isNotDefined(D_278164536,\"\"),false),or(equals(isNotDefined(D_160188014,\"\"),false),or(equals(isNotDefined(D_983038259,\"\"),false),or(equals(isNotDefined(D_596751155,\"\"),false),or(equals(isNotDefined(D_313586037,\"\"),false),or(equals(isNotDefined(D_624226136,\"\"),false),or(equals(isNotDefined(D_158186064,\"\"),false),or(equals(isNotDefined(D_807127029,\"\"),false),equals(isNotDefined(D_274940131,\"\"),false)))))))))))))", + "noneExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_274940131')", + "someExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_274940131')", + "someExist(\"D_985267931\",\"D_111275683\",\"D_129226572\",\"D_536516743\",\"D_288498031\",\"D_283900560\",\"D_195845897\",\"D_467947502\",\"D_936129960\",\"D_368486703\",\"D_924583345\")|valueEquals(\"D_290969423\",353358909)|valueEquals(\"D_869829679\",270752953)", + "someExist(\"D_875706715\",\"D_645150792\",\"D_585360350\",\"D_588699608\",\"D_648495207\",\"D_544692849\",\"D_300933270\",\"D_335435992\",\"D_649864362\",\"D_337088272\",\"D_723108194\")|valueEquals(\"D_862052821\",353358909)|valueEquals(\"D_845483079\",270752953)", + "someExist(\"D_130174162\",\"D_563832508\",\"D_817839081\",\"D_930511603\",\"D_931999203\",\"D_756548442\",\"D_486511102\",\"D_455968200\",\"D_267027102\",\"D_728704613\",\"D_734345879\")|valueEquals(\"D_593146348\",353358909)|valueEquals(\"D_736086261\",270752953)", + "someExist(\"D_838725845\",\"D_565515774\",\"D_848348504\",\"D_742177990\",\"D_445867902\",\"D_843508307\",\"D_348049244\",\"D_554901696\",\"D_684217044\",\"D_819429013\",\"D_600319581\")|valueEquals(\"D_983592172\",353358909)|valueEquals(\"D_294308065\",270752953)", + "someExist(\"D_306805272\",\"D_819844467\",\"D_164233037\",\"D_418702418\",\"D_218334768\",\"D_101219440\",\"D_394294282\",\"D_127963610\",\"D_803526907\",\"D_882731998\",\"D_941168091\")|valueEquals(\"D_776406200\",353358909)|valueEquals(\"D_385583361\",270752953)", + "someExist(\"D_351559015\",\"D_903490632\",\"D_906119853\",\"D_703944664\",\"D_476697171\",\"D_390463636\",\"D_605344820\",\"D_256790385\",\"D_814644814\",\"D_915222355\",\"D_627992821\")|valueEquals(\"D_135207939\",353358909)|valueEquals(\"D_768802173\",270752953)", + "someExist(\"D_893639464\",\"D_438475588\",\"D_194165243\",\"D_744290061\",\"D_280877371\",\"D_516936572\",\"D_463064782\",\"D_673034401\",\"D_865310914\",\"D_489019597\",\"D_900377581\")|valueEquals(\"D_647612167\",353358909)|valueEquals(\"D_150560299\",270752953)", + "someExist(\"D_988266183\",\"D_709374950\",\"D_853931010\",\"D_351559021\",\"D_548773158\",\"D_290370013\",\"D_487043303\",\"D_453691095\",\"D_659122266\",\"D_202104231\",\"D_388427546\")|valueEquals(\"D_532944666\",353358909)|valueEquals(\"D_122054737\",270752953)", + "someExist(\"D_264707783\",\"D_666011940\",\"D_981594981\",\"D_282089547\",\"D_891573875\",\"D_612617245\",\"D_862255177\",\"D_674024553\",\"D_972332937\",\"D_886247195\",\"D_429200007\")|valueEquals(\"D_548863580\",353358909)|valueEquals(\"D_948492967\",270752953)", + "someExist(\"D_622968789\",\"D_696874548\",\"D_450630128\",\"D_309461541\",\"D_706592013\",\"D_789637860\",\"D_585473282\",\"D_795253129\",\"D_814137809\",\"D_780298998\",\"D_876521406\")|valueEquals(\"D_124320444\",353358909)|valueEquals(\"D_805353966\",270752953)", + "equals(isDefined(D_720221117,-1),-1)", + "and(equals(isDefined(D_720221117,-1),-1),or(or(isNotDefined(D_128827522,false),isNotDefined(D_439447560,false)),or(isNotDefined(D_286781627,false),isNotDefined(D_733929451,false))))", + "exists('D_128827522')", + "doesNotExist(\"D_128827522\")", + "exists('D_439447560')", + "doesNotExist(\"D_439447560\")", + "exists('D_286781627')", + "doesNotExist(\"D_286781627\")", + "exists('D_733929451')", + "doesNotExist(\"D_733929451\")", + "noneExist(\"D_284547539\",\"D_802585033\") and someExist(\"D_890792569\",\"D_451394598\",\"D_984908796\",\"D_847327251\",\"D_128827522\",\"D_439447560\",\"D_286781627\",\"D_733929451\")", + "noneExist('D_284547539','D_802585033','D_746533238','D_128827522','D_890792569','D_439447560','D_451394598','D_286781627','D_984908796','D_733929451','D_847327251') and not valueEquals('D_277348878',778052314)", + "someExist('D_284547539','D_802585033','D_746533238','D_128827522','D_890792569','D_439447560','D_451394598','D_286781627','D_984908796','D_733929451','D_847327251')", + "equals(D_720221117,658491312)", + "equals(D_720221117,351928156)", + "equals(D_720221117,510681016)", + "equals(D_720221117,451961786)", + "equals(D_720221117,902342161)", + "equals(D_720221117,928670216)", + "equals(D_720221117,354020985)", + "equals(D_720221117,583113200)", + "equals(D_720221117,458045785)", + "equals(D_720221117,487265825)", + "equals(D_720221117,883331099)", + "not valueIsOneOf('D_720221117',658491312,351928156,510681016,451961786,902342161,928670216,354020985,583113200,458045785,487265825,883331099) and valueEquals('D_277348878',778052314)", + "noneExist('D_255248624','D_945532934','D_469838242','D_303500597','D_725583683','D_195068098','D_917021073','D_202784871','D_970000442','D_831127170','D_500100435') and valueEquals('D_720221117',658491312)", + "noneExist('D_985267931','D_111275683','D_129226572','D_536516743','D_288498031','D_283900560','D_195845897','D_467947502','D_936129960','D_368486703','D_924583345') and valueEquals('D_720221117',351928156)", + "noneExist('D_875706715','D_645150792','D_585360350','D_588699608','D_648495207','D_544692849','D_300933270','D_335435992','D_649864362','D_337088272','D_723108194') and valueEquals('D_720221117',510681016)", + "noneExist('D_130174162','D_563832508','D_817839081','D_930511603','D_931999203','D_756548442','D_486511102','D_455968200','D_267027102','D_728704613','D_734345879') and valueEquals('D_720221117',451961786)", + "noneExist('D_838725845','D_565515774','D_848348504','D_742177990','D_445867902','D_843508307','D_348049244','D_554901696','D_684217044','D_819429013','D_600319581') and valueEquals('D_720221117',902342161)", + "noneExist('D_306805272','D_819844467','D_164233037','D_418702418','D_218334768','D_101219440','D_394294282','D_127963610','D_803526907','D_882731998','D_941168091') and valueEquals('D_720221117',928670216)", + "noneExist('D_351559015','D_903490632','D_906119853','D_703944664','D_476697171','D_390463636','D_605344820','D_256790385','D_814644814','D_915222355','D_627992821') and valueEquals('D_720221117',354020985)", + "noneExist('D_893639464','D_438475588','D_194165243','D_744290061','D_280877371','D_516936572','D_463064782','D_673034401','D_865310914','D_489019597','D_900377581') and valueEquals('D_720221117',583113200)", + "noneExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546') and valueEquals('D_720221117',458045785)", + "noneExist('D_264707783','D_666011940','D_981594981','D_282089547','D_891573875','D_612617245','D_862255177','D_674024553','D_972332937','D_886247195','D_429200007') and valueEquals('D_720221117',487265825)", + "noneExist('D_622968789','D_696874548','D_450630128','D_309461541','D_706592013','D_789637860','D_585473282','D_795253129','D_814137809','D_780298998','D_876521406') and valueEquals('D_720221117',883331099)", + "noneExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546')and valueEquals('D_720221117',458045785)", + "equals(D_831438612,863839736)", + "equals(D_831438612,531671855)", + "equals(D_831438612,525375987)", + "equals(D_831438612,995797773)", + "equals(D_831438612,431441193)", + "exists('D_834822910')", + "doesNotExist('D_834822910')", + "or(or(isNotDefined(D_627183798,false),isNotDefined(D_901141257,false)),or(isNotDefined(D_599770535,false),isNotDefined(D_268600708,false)))", + "exists('D_627183798')", + "doesNotExist(\"D_627183798\")", + "exists('D_901141257')", + "doesNotExist(\"D_901141257\")", + "exists('D_599770535')", + "doesNotExist(\"D_599770535\")", + "exists('D_268600708')", + "doesNotExist(\"D_268600708\")", + "noneExist(\"D_307515427\",\"D_422521705\") and someExist(\"D_627183798\",\"D_901141257\",\"D_599770535\",\"D_268600708\",\"D_515150210\",\"D_182449282\",\"D_609408466\",\"D_702591232\")", + "noneExist('D_627183798','D_901141257','D_599770535','D_268600708','D_515150210','D_182449282','D_609408466','D_702591232')", + "someExist('D_627183798','D_901141257','D_599770535','D_268600708','D_515150210','D_182449282','D_609408466','D_702591232')", + "valueIsOneOf(\"D_421586693\",767755239,385609081,502946054,151757360,363747463,626380300,817932069,466212511)", + "equals(D_421586693,767755239)", + "equals(D_421586693,385609081)", + "equals(D_421586693,502946054)", + "equals(D_421586693,151757360)", + "equals(D_421586693,363747463)", + "equals(D_421586693,626380300)", + "equals(D_421586693,817932069)", + "equals(D_421586693,466212511)", + "valueIsOneOf(\"D_583216333\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_920653797\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_843066684\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_101850740\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_583216333\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_920653797\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_843066684\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_101850740\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_317194063\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_621948602\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_175502589\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_614443767\",248303092,998679771,638092100,127455035)", + "doesNotEqual(D_614208066,353358909)", + "(not(equals(\"D_614208066\",353358909)) and valueIsOneOf(\"D_799598595\",339946103,364857371,315356220,363036517,978362655,175003260,648051649,957052257)) or (not(equals(\"D_308634850\",353358909)) and valueIsOneOf(\"D_421586693\",767755239,385609081,502946054,151757360,363747463,626380300,817932069,466212511))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,339946103)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,767755239)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,364857371)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,385609081)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,315356220)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,502946054)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,363036517)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,151757360)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,978362655)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,363747463)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,175003260)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,626380300)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,648051649)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,817932069)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,957052257)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,466212511)),equals(D_614208066,353358909)))", + "valueIsOneOf(\"D_827461454\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_306356124\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_884514292\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_570556451\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_827461454\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_306356124\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_884514292\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_570556451\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_303089793\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_848543458\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_543804307\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_654108399\",248303092,998679771,638092100,127455035)", + "valueEquals(\"D_694113343\",353358909) and valueEquals(\"D_699873889\",353358909)", + "or(doesNotEqual(D_576417612,816566846),and(equals(D_694113343,353358909),doesNotEqual(D_699873889,353358909)))", + "and(and(equals(D_576417612,816566846),doesNotEqual(D_871276836,104430631)),equals(D_858178137,353358909))", + "and(equals(D_576417612,816566846),doesNotEqual(D_871276836,104430631))", + "valueEquals(\"D_576417612\",816566846) and valueEquals(\"D_871276836\",104430631)", + "and(equals(D_694113343,353358909),or(equals(D_970148613,353358909),equals(D_374639590,104430631)))", + "equals(D_576417612,816566846)", + "equals(D_374639590,104430631)", + "and(and(equals(D_694113343,353358909),or(equals(D_970148613,353358909),equals(D_374639590,104430631))),doesNotEqual(D_858178137,353358909))", + "valueEquals(\"D_970148613\",353358909) and someExist(\"D_560853245\",\"D_307515427\",\"D_422521705\",\"D_330163034\",\"D_555595404\",\"D_146107174\",\"D_627183798\",\"D_901141257\",\"D_599770535\",\"D_268600708\",\"D_515150210\",\"D_182449282\",\"D_609408466\",\"D_702591232\")", + "or(and(or(equals(D_828801156,759356722),equals(D_828801156,185036360)),equals(D_374639590,104430631)),doesNotEqual(D_211472150,353358909))", + "and(or(and(or(equals(D_828801156,759356722),equals(D_828801156,185036360)),equals(D_374639590,104430631)),doesNotEqual(D_211472150,353358909)),or(or(isNotDefined(D_959804472,false),isNotDefined(D_774707280,false)),or(isNotDefined(D_182144476,false),isNotDefined(D_294634899,false))))", + "exists('D_959804472')", + "doesNotExist(\"D_959804472\")", + "exists('D_774707280')", + "doesNotExist(\"D_774707280\")", + "exists('D_182144476')", + "doesNotExist(\"D_182144476\")", + "exists('D_294634899')", + "doesNotExist(\"D_294634899\")", + "noneExist(\"D_493984171\",\"D_253017624\") and someExist(\"D_583500714\",\"D_742105146\",\"D_101341673\",\"D_237204853\",\"D_959804472\",\"D_774707280\",\"D_182144476\",\"D_294634899\")", + "someExist('D_493984171','D_253017624','D_404141282','D_959804472','D_583500714','D_774707280','D_742105146','D_182144476','D_101341673','D_294634899','D_237204853')", + "noneExist('D_493984171','D_253017624','D_404141282','D_959804472','D_583500714','D_774707280','D_742105146','D_182144476','D_101341673','D_294634899','D_237204853')", + "or(equals(isNotDefined(D_493984171,''),false),or(equals(isNotDefined(D_253017624,''),false),or(equals(isNotDefined(D_404141282,''),false),or(equals(isNotDefined(D_959804472,''),false),or(equals(isNotDefined(D_583500714,''),false),or(equals(isNotDefined(D_774707280,''),false),or(equals(isNotDefined(D_742105146,''),false),or(equals(isNotDefined(D_182144476,''),false),or(equals(isNotDefined(D_101341673,''),false),or(equals(isNotDefined(D_294634899,''),false),equals(isNotDefined(D_237204853,''),false)))))))))))", + "and(equals(isNotDefined(D_493984171,''),true),and(equals(isNotDefined(D_253017624,''),true),and(equals(isNotDefined(D_404141282,''),true),and(equals(isNotDefined(D_959804472,''),true),and(equals(isNotDefined(D_583500714,''),true),and(equals(isNotDefined(D_774707280,''),true),and(equals(isNotDefined(D_742105146,''),true),and(equals(isNotDefined(D_182144476,''),true),and(equals(isNotDefined(D_101341673,''),true),and(equals(isNotDefined(D_294634899,''),true),equals(isNotDefined(D_237204853,''),true)))))))))))", + "equals(D_635467479,158795242)", + "equals(D_635467479,443596662)", + "equals(D_635467479,892894242)", + "equals(D_635467479,177539753)", + "equals(D_635467479,107659596)", + "equals(D_635467479,575883949)", + "equals(D_635467479,248168118)", + "equals(D_635467479,509121242)", + "valueIsOneOf(\"D_593010802\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453004768\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_511991969\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_546570171\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_593010802\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453004768\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_511991969\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_546570171\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_242761203\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_587434250\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_569993305\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_662584384\",248303092,998679771,638092100,127455035)", + "and(and(equals(D_694113343,353358909),or(equals(D_970148613,353358909),equals(D_374639590,104430631))),doesNotEqual(D_684542266,353358909))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,581991828)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,158795242)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,846844103)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,443596662)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,660927579)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,892894242)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,940452831)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,177539753)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,669359763)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,107659596)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,950972496)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,575883949)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,137216656)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,248168118)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,244488084)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,509121242)),equals(D_684542266,353358909)))", + "valueIsOneOf(\"D_659799855\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_552410034\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_772382520\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_146307133\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_659799855\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_552410034\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_772382520\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_146307133\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_100591237\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_823402922\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_289302451\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_419151253\",248303092,998679771,638092100,127455035)", + "or(equals(D_858178137,353358909),equals(D_635780118,353358909))", + "and(doesNotEqual(D_694113343,353358909),doesNotEqual(D_699873889,353358909))", + "or(or(isNotDefined(D_962868433,false),isNotDefined(D_108530997,false)),or(isNotDefined(D_110852652,false),isNotDefined(D_867109611,false)))", + "exists('D_962868433')", + "doesNotExist(\"D_962868433\")", + "exists('D_108530997')", + "doesNotExist(\"D_108530997\")", + "exists('D_110852652')", + "doesNotExist(\"D_110852652\")", + "exists('D_867109611')", + "doesNotExist(\"D_867109611\")", + "noneExist(\"D_903896611\",\"D_855583262\") and someExist(\"D_652022112\",\"D_730666903\",\"D_168091937\",\"D_132779701\",\"D_962868433\",\"D_108530997\",\"D_110852652\",\"D_867109611\")", + "someExist('D_903896611','D_855583262','D_371588177','D_962868433','D_652022112','D_108530997','D_730666903','D_110852652','D_168091937','D_867109611','D_132779701')", + "noneExist('D_903896611','D_855583262','D_371588177','D_962868433','D_652022112','D_108530997','D_730666903','D_110852652','D_168091937','D_867109611','D_132779701')", + "or(equals(isNotDefined(D_903896611,''),false),or(equals(isNotDefined(D_855583262,''),false),or(equals(isNotDefined(D_371588177,''),false),or(equals(isNotDefined(D_962868433,''),false),or(equals(isNotDefined(D_652022112,''),false),or(equals(isNotDefined(D_108530997,''),false),or(equals(isNotDefined(D_730666903,''),false),or(equals(isNotDefined(D_110852652,''),false),or(equals(isNotDefined(D_168091937,''),false),or(equals(isNotDefined(D_867109611,''),false),equals(isNotDefined(D_132779701,''),false)))))))))))", + "and(equals(isNotDefined(D_903896611,''),true),and(equals(isNotDefined(D_855583262,''),true),and(equals(isNotDefined(D_371588177,''),true),and(equals(isNotDefined(D_962868433,''),true),and(equals(isNotDefined(D_652022112,''),true),and(equals(isNotDefined(D_108530997,''),true),and(equals(isNotDefined(D_730666903,''),true),and(equals(isNotDefined(D_110852652,''),true),and(equals(isNotDefined(D_168091937,''),true),and(equals(isNotDefined(D_867109611,''),true),equals(isNotDefined(D_132779701,''),true)))))))))))", + "equals(D_311891586,172103427)", + "equals(D_311891586,794959813)", + "equals(D_311891586,683306241)", + "equals(D_311891586,116442173)", + "equals(D_311891586,639735881)", + "equals(D_311891586,296254034)", + "equals(D_311891586,807973203)", + "equals(D_311891586,766970054)", + "doesNotEqual(D_564557026,353358909)", + "or(doesNotEqual(D_839233937,353358909),doesNotEqual(D_564557026,353358909))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,450075248)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,172103427)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,471142791)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,794959813)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,197093427)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,683306241)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,779421821)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,116442173)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,925663113)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,639735881)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,368973683)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,296254034)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,830201925)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,807973203)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,572643998)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,766970054)),equals(D_564557026,353358909)))", + "or(equals(D_784967158,551525967),equals(D_784967158,738284740))", + "and(or(equals(D_784967158,551525967),equals(D_784967158,738284740)),or(or(isNotDefined(D_161170041,false),isNotDefined(D_660217075,false)),or(isNotDefined(D_884494489,false),isNotDefined(D_403679963,false))))", + "exists('D_161170041')", + "doesNotExist(\"D_161170041\")", + "exists('D_660217075')", + "doesNotExist(\"D_660217075\")", + "exists('D_884494489')", + "doesNotExist(\"D_884494489\")", + "exists('D_403679963')", + "doesNotExist(\"D_403679963\")", + "noneExist(\"D_970996351\",\"D_249657148\") and someExist(\"D_225725599\",\"D_977086216\",\"D_997041632\",\"D_147113671\",\"D_161170041\",\"D_660217075\",\"D_884494489\",\"D_403679963\")", + "noneExist('D_970996351','D_249657148','D_190883115','D_161170041','D_225725599','D_660217075','D_977086216','D_884494489','D_997041632','D_403679963','D_147113671')", + "someExist('D_970996351','D_249657148','D_190883115','D_161170041','D_225725599','D_660217075','D_977086216','D_884494489','D_997041632','D_403679963','D_147113671')", + "or(equals(isNotDefined(D_970996351,''),false),or(equals(isNotDefined(D_249657148,''),false),or(equals(isNotDefined(D_190883115,''),false),or(equals(isNotDefined(D_161170041,''),false),or(equals(isNotDefined(D_225725599,''),false),or(equals(isNotDefined(D_660217075,''),false),or(equals(isNotDefined(D_977086216,''),false),or(equals(isNotDefined(D_884494489,''),false),or(equals(isNotDefined(D_997041632,''),false),or(equals(isNotDefined(D_403679963,''),false),equals(isNotDefined(D_147113671,''),false)))))))))))", + "and(equals(isNotDefined(D_970996351,''),true),and(equals(isNotDefined(D_249657148,''),true),and(equals(isNotDefined(D_190883115,''),true),and(equals(isNotDefined(D_161170041,''),true),and(equals(isNotDefined(D_225725599,''),true),and(equals(isNotDefined(D_660217075,''),true),and(equals(isNotDefined(D_977086216,''),true),and(equals(isNotDefined(D_884494489,''),true),and(equals(isNotDefined(D_997041632,''),true),and(equals(isNotDefined(D_403679963,''),true),equals(isNotDefined(D_147113671,''),true)))))))))))", + "equals(D_404863614,782113721)", + "equals(D_404863614,207263450)", + "equals(D_404863614,638833327)", + "equals(D_404863614,736981982)", + "equals(D_404863614,932195315)", + "equals(D_404863614,279026426)", + "equals(D_404863614,691579493)", + "equals(D_404863614,211269389)", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_891237683\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_980695076\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_265423096\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_185533250\",248303092,998679771,638092100,127455035))", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_891237683\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_980695076\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_265423096\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_185533250\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_769785846\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_330492115\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_173979298\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_154229258\",248303092,998679771,638092100,127455035))", + "and(doesNotEqual(D_496801729,353358909),or(equals(D_784967158,551525967),equals(D_784967158,738284740)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,467242967)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,782113721)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,645051966)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,207263450)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,756061540)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,638833327)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,198883577)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,736981982)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,634680635)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,932195315)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,790657437)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,279026426)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,107428524)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,691579493)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,804918983)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,211269389)),equals(D_496801729,353358909)))", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_990162153\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_576149634\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_291458877\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453417964\",248303092,998679771,638092100,127455035))", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_990162153\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_576149634\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_291458877\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453417964\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_550646850\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_949549557\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_214274185\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_533003859\",248303092,998679771,638092100,127455035))" + ], + "sitesByScope": { + "element": 104, + "inline": 685, + "question": 230, + "response": 330 + }, + "sitesByAttribute": { + "displayif": 1349 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 367, + "processorQuestionCount": 367, + "processedQuestionCount": 367, + "renderedFormCount": 367, + "controlCount": 2817, + "responseControlCount": 1677, + "explicitTransitionCount": 259, + "sequentialAdjacencyCount": 366, + "resolvedExplicitTransitionCount": 259, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1349, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 479 + } + }, + { + "schemaVersion": 1, + "module": "module4", + "locale": "es", + "language": "es", + "path": "prod/module4Spanish.txt", + "sha256": "c1705fb2632f8c2fda8f22a716fb006eecacde9aa75b153611c4e7f15aec5c3f", + "questName": "D_716117817", + "version": "2.0", + "authoredMarkerCount": 367, + "runtimeQuestionIds": [ + "INTROM4", + "INTRORH", + "D_121490150?", + "D_920576363?", + "D_804504024?", + "HOMEADD4_1", + "D_290969423?", + "D_869829679?", + "D_574985342?", + "D_444145120?", + "D_398762737?", + "HOMEADD4_2", + "D_862052821?", + "D_845483079?", + "D_828086036?", + "D_752101258?", + "D_961572487?", + "HOMEADD4_3", + "D_593146348?", + "D_736086261?", + "D_680046149?", + "D_879180101?", + "D_746604821?", + "HOMEADD4_4", + "D_983592172?", + "D_294308065?", + "D_274189667?", + "D_212343294?", + "D_298296694?", + "HOMEADD4_5", + "D_776406200?", + "D_385583361?", + "D_113930886?", + "D_255474241?", + "D_205492848?", + "HOMEADD4_6", + "D_135207939?", + "D_768802173?", + "D_809728747?", + "D_201906316?", + "D_581231591?", + "HOMEADD4_7", + "D_647612167?", + "D_150560299?", + "D_539057792?", + "D_864213677?", + "D_123104885?", + "HOMEADD4_8", + "D_532944666?", + "D_122054737?", + "D_537011756?", + "D_964853797?", + "D_890661849?", + "HOMEADD4_9", + "D_548863580?", + "D_948492967?", + "D_171937884?", + "D_787064287?", + "D_902193418?", + "HOMEADD4_10", + "D_124320444?", + "D_805353966?", + "D_828766803?", + "D_878688378?", + "D_440597740?", + "HOMEADD4_11", + "HOMEADDSUM_11", + "D_590222838?", + "D_728155643?", + "D_623452399?", + "D_380621340?", + "D_876443676?", + "D_999694720?", + "D_270587543?", + "D_849066624?", + "D_195167143?", + "D_425315696?", + "D_495330716?", + "D_529608184?", + "D_783797179?", + "D_234731641?", + "D_243695994?", + "D_664561394?", + "D_562190570?", + "D_450154625?", + "D_790359238?", + "D_812161236?", + "D_925747671?", + "D_964437163?", + "INTROHOMEWTR", + "D_958419506?", + "D_725408440?", + "D_539909957?", + "D_505863509?", + "D_651233069?", + "D_250486386?", + "D_957717014?", + "D_809387606?", + "D_726654963?", + "D_195367894?", + "D_428044531?", + "D_934184033?", + "D_986989731?", + "D_441498892?", + "D_508187475?", + "D_665978055?", + "D_113557709?", + "D_933017499?", + "D_386487941?", + "D_268661616?", + "D_494698740?", + "D_211740798?", + "D_318621931?", + "D_542086156?", + "D_190307069?", + "D_697751634?", + "D_740535024?", + "D_154170916?", + "D_277745320?", + "D_825109070?", + "D_337574535?", + "D_535386940?", + "D_927932321?", + "INTROSH", + "D_342677547?", + "D_710449106?", + "D_376408004?", + "D_173413183?", + "D_200086909?", + "SEASADD4_1", + "D_576956950?", + "D_512143997?", + "D_279093430?", + "D_657986901?", + "D_509526051?", + "SEASADD4_2", + "D_463952618?", + "D_982650994?", + "D_143927994?", + "D_564684946?", + "D_370121390?", + "SEASADD4_3", + "D_959488634?", + "D_945794974?", + "D_935378391?", + "D_558981691?", + "D_192184336?", + "SEASADD4_4", + "D_696017690?", + "D_663869343?", + "D_320166033?", + "D_194944818?", + "D_763354979?", + "SEASADD4_5", + "D_424272506?", + "D_275978701?", + "D_383535171?", + "D_508587741?", + "D_355179190?", + "SEASADD4_6", + "D_484550481?", + "D_195803565?", + "D_133566757?", + "D_293954660?", + "D_851731394?", + "SEASADD4_7", + "D_773680071?", + "D_282326355?", + "D_509553290?", + "D_268612977?", + "D_172669345?", + "SEASADD4_8", + "D_348817644?", + "D_141249692?", + "D_239279719?", + "D_216096388?", + "D_921998144?", + "SEASADD4_9", + "D_800194290?", + "D_494968690?", + "D_778711683?", + "D_757983656?", + "D_670316988?", + "SEASADD4_10", + "SEASADDSUM_10", + "D_379754686?", + "D_975198123?", + "D_860269869?", + "D_963795928?", + "D_778495585?", + "D_928112898?", + "D_775038507?", + "D_829751791?", + "D_412195193?", + "D_778721228?", + "D_914325712?", + "D_750000285?", + "D_504158362?", + "D_682457230?", + "D_849979952?", + "D_696972918?", + "D_404118353?", + "D_552298163?", + "D_921090200?", + "D_806530984?", + "D_710443293?", + "D_134624195?", + "D_613251957?", + "D_878144094?", + "D_274396191?", + "D_437395872?", + "D_709755471?", + "D_940513931?", + "D_288109261?", + "D_701803756?", + "INTROSEASWTR", + "D_426743354?", + "D_809682067?", + "D_598478268?", + "D_170035952?", + "D_734596352?", + "D_823509509?", + "D_771505558?", + "D_524305502?", + "D_149476435?", + "D_105941645?", + "D_120942783?", + "D_719647239?", + "D_322665488?", + "D_167987013?", + "D_953722451?", + "D_118738120?", + "D_340877879?", + "D_541565665?", + "D_728256340?", + "D_976597527?", + "D_274257975?", + "D_603945794?", + "D_277312204?", + "D_636020848?", + "D_304685106?", + "D_201989756?", + "D_296694684?", + "D_274780951?", + "D_491337167?", + "D_321932473?", + "INTROCH", + "D_277348878?", + "D_720221117?", + "D_632533534?", + "D_264797252?", + "D_469914719?", + "CHILDADD4", + "D_191221569?", + "D_752015272?", + "D_714365367?", + "D_665593888?", + "TAPWTRINTRO", + "D_285545471?", + "D_831438612?", + "D_961178879?", + "D_138116092?", + "D_393682471?", + "D_364303962?", + "D_944517297?", + "D_302947409?", + "COMINTRO", + "INTROWORKPOSTPAN", + "D_699873889?", + "D_213152981?", + "D_858178137?", + "D_871276836?", + "D_660218333?", + "D_263959391?", + "D_986316055?", + "D_116032363?", + "CURWORKPOSTPANCONFIRM", + "D_870675371?", + "D_788065155?", + "D_421586693?", + "D_733638576?", + "D_166943843?", + "D_173155090?", + "D_234136107?", + "D_666629067?", + "D_614208066?", + "D_308634850?", + "D_799598595?", + "D_532260562?", + "D_242268237?", + "D_568581510?", + "D_277953784?", + "D_510872569?", + "INTROCURWORK", + "D_694113343?", + "D_576417612?", + "D_374639590?", + "INTROPREPANDIFF_INTROPREWORK_SKIP", + "INTROPREPANDIFF_SKIP", + "INTROPREPANDIFF", + "D_970148613?", + "D_774087638?", + "D_635780118?", + "D_828801156?", + "D_211472150?", + "D_596318751?", + "D_263588196?", + "D_845811202?", + "CURWORKCONFIRM", + "D_380579855?", + "D_138397553?", + "D_635467479?", + "D_440093675?", + "D_155199731?", + "D_181422361?", + "D_333362587?", + "D_839454121?", + "D_684542266?", + "D_203943120?", + "D_404697804?", + "D_786253125?", + "D_186636914?", + "D_936393993?", + "D_168563469?", + "D_219893040?", + "INTROPREWORK_SKIP", + "INTROPREWORK", + "D_995620555?", + "D_980007418?", + "D_992180692?", + "D_350394531?", + "D_733317111?", + "PREWORKCONFIRM", + "D_569375463?", + "D_822005593?", + "D_311891586?", + "D_968388901?", + "D_335218615?", + "D_564557026?", + "D_839233937?", + "D_251048648?", + "D_679430807?", + "D_475144270?", + "INTROCURSCH", + "D_449752653?", + "D_959371875?", + "D_914696832?", + "D_668887646?", + "D_443679537?", + "CURSCHCONFIRM", + "D_224209278?", + "D_659744749?", + "D_404863614?", + "D_135529881?", + "D_136660779?", + "D_107050954?", + "D_559488982?", + "D_940631293?", + "D_496801729?", + "D_230528407?", + "D_345355061?", + "D_219317801?", + "D_705673076?", + "D_333852852?", + "D_776580384?", + "D_849811593?", + "END" + ], + "responseControlsByType": { + "checkbox": 156, + "number": 72, + "radio": 1054, + "text": 395 + }, + "explicitTransitions": { + "targets": [ + "D_574985342", + "D_590222838", + "D_828086036", + "D_680046149", + "D_274189667", + "D_113930886", + "D_809728747", + "D_539057792", + "D_537011756", + "D_171937884", + "D_828766803", + "D_539909957", + "D_725408440", + "D_250486386", + "D_651233069", + "D_726654963", + "D_809387606", + "D_934184033", + "D_428044531", + "D_508187475", + "D_441498892", + "D_933017499", + "D_113557709", + "D_494698740", + "D_268661616", + "D_542086156", + "D_318621931", + "D_740535024", + "D_697751634", + "D_825109070", + "D_277745320", + "D_927932321", + "D_535386940", + "INTROSH", + "D_376408004", + "D_710449106", + "INTROCH", + "D_279093430", + "D_379754686", + "D_143927994", + "D_935378391", + "D_320166033", + "D_383535171", + "D_133566757", + "D_509553290", + "D_239279719", + "D_778711683", + "D_598478268", + "D_809682067", + "D_823509509", + "D_734596352", + "D_149476435", + "D_524305502", + "D_719647239", + "D_120942783", + "D_953722451", + "D_167987013", + "D_541565665", + "D_340877879", + "D_274257975", + "D_976597527", + "D_636020848", + "D_277312204", + "D_296694684", + "D_201989756", + "D_321932473", + "D_491337167", + "D_720221117", + "D_632533534", + "CHILDADD4", + "D_302947409", + "INTROCURWORK", + "D_666629067", + "D_799598595", + "D_510872569", + "D_532260562", + "INTROPREWORK_SKIP", + "INTROPREPANDIFF_INTROPREWORK_SKIP", + "D_774087638", + "INTROCURSCH", + "D_635467479", + "D_839454121", + "D_404697804", + "D_219893040", + "D_786253125", + "D_995620555", + "D_980007418", + "D_992180692", + "D_335218615", + "D_839233937", + "D_251048648", + "D_475144270", + "D_679430807", + "END", + "D_940631293", + "D_345355061", + "D_849811593", + "D_219317801" + ], + "byKind": { + "default": 6, + "no-response": 76, + "response": 177 + }, + "byResolution": { + "exact": 256, + "terminal": 3 + }, + "triggerTypes": { + "hidden": 82, + "radio": 177 + }, + "triggerValues": [ + "353358909", + "580377720", + "901693169", + "519767819", + "388690303", + "807835037", + "178420302", + "104430631", + "614395648", + "991158851", + "778052314", + "751569137", + "684900118", + "816566846" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "or(or(isNotDefined(D_303500597,false),isNotDefined(D_195068098,false)),or(isNotDefined(D_202784871,false),isNotDefined(D_831127170,false)))", + "exists('D_303500597')", + "doesNotExist(\"D_303500597\")", + "exists('D_195068098')", + "doesNotExist(\"D_195068098\")", + "exists('D_202784871')", + "doesNotExist(\"D_202784871\")", + "exists('D_831127170')", + "doesNotExist(\"D_831127170\")", + "noneExist(\"D_255248624\",\"D_945532934\") and someExist(\"D_725583683\",\"D_917021073\",\"D_970000442\",\"D_500100435\",\"D_303500597\",\"D_195068098\",\"D_202784871\",\"D_831127170\")", + "someExist('D_255248624','D_945532934','D_469838242','D_303500597','D_725583683','D_195068098','D_917021073','D_202784871','D_970000442','D_831127170','D_500100435')", + "noneExist('D_255248624','D_945532934','D_469838242','D_303500597','D_725583683','D_195068098','D_917021073','D_202784871','D_970000442','D_831127170','D_500100435')", + "or(or(isNotDefined(D_536516743,false),isNotDefined(D_283900560,false)),or(isNotDefined(D_467947502,false),isNotDefined(D_368486703,false)))", + "exists('D_536516743')", + "doesNotExist(\"D_536516743\")", + "exists('D_283900560')", + "doesNotExist(\"D_283900560\")", + "exists('D_467947502')", + "doesNotExist(\"D_467947502\")", + "exists('D_368486703')", + "doesNotExist(\"D_368486703\")", + "displayif=noneExist(\"D_985267931\",\"D_111275683\") and someExist(\"D_288498031\",\"D_195845897\",\"D_936129960\",\"D_924583345\",\"D_536516743\",\"D_283900560\",\"D_467947502\",\"D_368486703\")", + "noneExist('D_985267931','D_111275683','D_129226572','D_536516743','D_288498031','D_283900560','D_195845897','D_467947502','D_936129960','D_368486703','D_924583345')", + "someExist('D_985267931','D_111275683','D_129226572','D_536516743','D_288498031','D_283900560','D_195845897','D_467947502','D_936129960','D_368486703','D_924583345')", + "or(or(isNotDefined(D_588699608,false),isNotDefined(D_544692849,false)),or(isNotDefined(D_335435992,false),isNotDefined(D_337088272,false)))", + "exists('D_588699608')", + "doesNotExist(\"D_588699608\")", + "exists('D_544692849')", + "doesNotExist(\"D_544692849\")", + "exists('D_335435992')", + "doesNotExist(\"D_335435992\")", + "exists('D_337088272')", + "doesNotExist(\"D_337088272\")", + "noneExist(\"D_875706715\",\"D_645150792\") and someExist(\"D_648495207\",\"D_300933270\",\"D_649864362\",\"D_723108194\",\"D_588699608\",\"D_544692849\",\"D_335435992\",\"D_337088272\")", + "noneExist('D_875706715','D_645150792','D_585360350','D_588699608','D_648495207','D_544692849','D_300933270','D_335435992','D_649864362','D_337088272','D_723108194')", + "someExist('D_875706715','D_645150792','D_585360350','D_588699608','D_648495207','D_544692849','D_300933270','D_335435992','D_649864362','D_337088272','D_723108194')", + "or(or(isNotDefined(D_930511603,false),isNotDefined(D_756548442,false)),or(isNotDefined(D_455968200,false),isNotDefined(D_728704613,false)))", + "exists('D_930511603')", + "doesNotExist(\"D_930511603\")", + "exists('D_756548442')", + "doesNotExist(\"D_756548442\")", + "exists('D_455968200')", + "doesNotExist(\"D_455968200\")", + "exists('D_728704613')", + "doesNotExist(\"D_728704613\")", + "noneExist(\"D_130174162\",\"D_563832508\") and someExist(\"D_931999203\",\"D_486511102\",\"D_267027102\",\"D_734345879\",\"D_930511603\",\"D_756548442\",\"D_455968200\",\"D_728704613\")", + "noneExist('D_130174162','D_563832508','D_817839081','D_930511603','D_931999203','D_756548442','D_486511102','D_455968200','D_267027102','D_728704613','D_734345879')", + "someExist('D_130174162','D_563832508','D_817839081','D_930511603','D_931999203','D_756548442','D_486511102','D_455968200','D_267027102','D_728704613','D_734345879')", + "or(or(isNotDefined(D_742177990,false),isNotDefined(D_843508307,false)),or(isNotDefined(D_554901696,false),isNotDefined(D_819429013,false)))", + "exists('D_742177990')", + "doesNotExist(\"D_742177990\")", + "exists('D_843508307')", + "doesNotExist(\"D_843508307\")", + "exists('D_554901696')", + "doesNotExist(\"D_554901696\")", + "exists('D_819429013')", + "doesNotExist(\"D_819429013\")", + "noneExist(\"D_838725845\",\"D_565515774\") and someExist(\"D_445867902\",\"D_348049244\",\"D_684217044\",\"D_600319581\",\"D_742177990\",\"D_843508307\",\"D_554901696\",\"D_819429013\")", + "noneExist('D_838725845','D_565515774','D_848348504','D_742177990','D_445867902','D_843508307','D_348049244','D_554901696','D_684217044','D_819429013','D_600319581')", + "someExist('D_838725845','D_565515774','D_848348504','D_742177990','D_445867902','D_843508307','D_348049244','D_554901696','D_684217044','D_819429013','D_600319581')", + "or(or(isNotDefined(D_418702418,false),isNotDefined(D_101219440,false)),or(isNotDefined(D_127963610,false),isNotDefined(D_882731998,false)))", + "exists('D_418702418')", + "doesNotExist(\"D_418702418\")", + "exists('D_101219440')", + "doesNotExist(\"D_101219440\")", + "exists('D_127963610')", + "doesNotExist(\"D_127963610\")", + "exists('D_882731998')", + "doesNotExist(\"D_882731998\")", + "displayif=noneExist(\"D_306805272\",\"D_819844467\") and someExist(\"D_218334768\",\"D_394294282\",\"D_803526907\",\"D_941168091\",\"D_418702418\",\"D_101219440\",\"D_127963610\",\"D_882731998\")", + "noneExist('D_306805272','D_819844467','D_164233037','D_418702418','D_218334768','D_101219440','D_394294282','D_127963610','D_803526907','D_882731998','D_941168091')", + "someExist('D_306805272','D_819844467','D_164233037','D_418702418','D_218334768','D_101219440','D_394294282','D_127963610','D_803526907','D_882731998','D_941168091')", + "or(or(isNotDefined(D_703944664,false),isNotDefined(D_390463636,false)),or(isNotDefined(D_256790385,false),isNotDefined(D_915222355,false)))", + "exists('D_703944664')", + "doesNotExist(\"D_703944664\")", + "exists('D_390463636')", + "doesNotExist(\"D_390463636\")", + "exists('D_256790385')", + "doesNotExist(\"D_256790385\")", + "exists('D_915222355')", + "doesNotExist(\"D_915222355\")", + "noneExist(\"D_351559015\",\"D_903490632\") and someExist(\"D_476697171\",\"D_605344820\",\"D_814644814\",\"D_627992821\",\"D_703944664\",\"D_390463636\",\"D_256790385\",\"D_915222355\")", + "noneExist('D_351559015','D_903490632','D_906119853','D_703944664','D_476697171','D_390463636','D_605344820','D_256790385','D_814644814','D_915222355','D_627992821')", + "someExist('D_351559015','D_903490632','D_906119853','D_703944664','D_476697171','D_390463636','D_605344820','D_256790385','D_814644814','D_915222355','D_627992821')", + "or(or(isNotDefined(D_744290061,false),isNotDefined(D_516936572,false)),or(isNotDefined(D_673034401,false),isNotDefined(D_489019597,false)))", + "exists('D_744290061')", + "doesNotExist(\"D_744290061\")", + "exists('D_516936572')", + "doesNotExist(\"D_516936572\")", + "exists('D_673034401')", + "doesNotExist(\"D_673034401\")", + "exists('D_489019597')", + "doesNotExist(\"D_489019597\")", + "noneExist(\"D_893639464\",\"D_438475588\") and someExist(\"D_280877371\",\"D_463064782\",\"D_865310914\",\"D_900377581\",\"D_744290061\",\"D_516936572\",\"D_673034401\",\"D_489019597\")", + "noneExist('D_893639464','D_438475588','D_194165243','D_744290061','D_280877371','D_516936572','D_463064782','D_673034401','D_865310914','D_489019597','D_900377581')", + "someExist('D_893639464','D_438475588','D_194165243','D_744290061','D_280877371','D_516936572','D_463064782','D_673034401','D_865310914','D_489019597','D_900377581')", + "or(or(isNotDefined(D_351559021,false),isNotDefined(D_290370013,false)),or(isNotDefined(D_453691095,false),isNotDefined(D_202104231,false)))", + "exists('D_351559021')", + "doesNotExist(\"D_351559021\")", + "exists('D_290370013')", + "doesNotExist(\"D_290370013\")", + "exists('D_453691095')", + "doesNotExist(\"D_453691095\")", + "exists('D_202104231')", + "doesNotExist(\"D_202104231\")", + "noneExist(\"D_988266183\",\"D_709374950\") and someExist(\"D_548773158\",\"D_487043303\",\"D_659122266\",\"D_388427546\",\"D_351559021\",\"D_290370013\",\"D_453691095\",\"D_202104231\")", + "noneExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546')", + "someExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546')", + "or(or(isNotDefined(D_282089547,false),isNotDefined(D_612617245,false)),or(isNotDefined(D_674024553,false),isNotDefined(D_886247195,false)))", + "exists('D_282089547')", + "doesNotExist(\"D_282089547\")", + "exists('D_612617245')", + "doesNotExist(\"D_612617245\")", + "exists('D_674024553')", + "doesNotExist(\"D_674024553\")", + "exists('D_886247195')", + "doesNotExist(\"D_886247195\")", + "noneExist(\"D_264707783\",\"D_666011940\") and someExist(\"D_891573875\",\"D_862255177\",\"D_972332937\",\"D_429200007\",\"D_282089547\",\"D_612617245\",\"D_674024553\",\"D_886247195\")", + "noneExist('D_264707783','D_666011940','D_981594981','D_282089547','D_891573875','D_612617245','D_862255177','D_674024553','D_972332937','D_886247195','D_429200007')", + "someExist('D_264707783','D_666011940','D_981594981','D_282089547','D_891573875','D_612617245','D_862255177','D_674024553','D_972332937','D_886247195','D_429200007')", + "or(or(isNotDefined(D_309461541,false),isNotDefined(D_789637860,false)),or(isNotDefined(D_795253129,false),isNotDefined(D_780298998,false)))", + "exists('D_309461541')", + "doesNotExist(\"D_309461541\")", + "exists('D_789637860')", + "doesNotExist(\"D_789637860\")", + "exists('D_795253129')", + "doesNotExist(\"D_795253129\")", + "exists('D_780298998')", + "doesNotExist(\"D_780298998\")", + "noneExist(\"D_622968789\",\"D_696874548\") and someExist(\"D_706592013\",\"D_585473282\",\"D_814137809\",\"D_876521406\",\"D_309461541\",\"D_789637860\",\"D_795253129\",\"D_780298998\")", + "noneExist('D_622968789','D_696874548','D_450630128','D_309461541','D_706592013','D_789637860','D_585473282','D_795253129','D_814137809','D_780298998','D_876521406')", + "someExist('D_622968789','D_696874548','D_450630128','D_309461541','D_706592013','D_789637860','D_585473282','D_795253129','D_814137809','D_780298998','D_876521406')", + "or(equals(D_290969423,353358909),or(equals(D_869829679,270752953),or(equals(isNotDefined(D_985267931,\"\"),false),or(equals(isNotDefined(D_111275683,\"\"),false),or(equals(isNotDefined(D_129226572,\"\"),false),or(equals(isNotDefined(D_536516743,\"\"),false),or(equals(isNotDefined(D_288498031,\"\"),false),or(equals(isNotDefined(D_283900560,\"\"),false),or(equals(isNotDefined(D_195845897,\"\"),false),or(equals(isNotDefined(D_467947502,\"\"),false),or(equals(isNotDefined(D_936129960,\"\"),false),or(equals(isNotDefined(D_368486703,\"\"),false),equals(isNotDefined(D_924583345,\"\"),false)))))))))))))", + "or(equals(D_862052821,353358909),or(equals(D_845483079,270752953),or(equals(isNotDefined(D_875706715,\"\"),false),or(equals(isNotDefined(D_645150792,\"\"),false),or(equals(isNotDefined(D_585360350,\"\"),false),or(equals(isNotDefined(D_588699608,\"\"),false),or(equals(isNotDefined(D_648495207,\"\"),false),or(equals(isNotDefined(D_544692849,\"\"),false),or(equals(isNotDefined(D_300933270,\"\"),false),or(equals(isNotDefined(D_335435992,\"\"),false),or(equals(isNotDefined(D_649864362,\"\"),false),or(equals(isNotDefined(D_337088272,\"\"),false),equals(isNotDefined(D_723108194,\"\"),false)))))))))))))", + "or(equals(D_593146348,353358909),or(equals(D_736086261,270752953),or(equals(isNotDefined(D_130174162,\"\"),false),or(equals(isNotDefined(D_563832508,\"\"),false),or(equals(isNotDefined(D_817839081,\"\"),false),or(equals(isNotDefined(D_930511603,\"\"),false),or(equals(isNotDefined(D_931999203,\"\"),false),or(equals(isNotDefined(D_756548442,\"\"),false),or(equals(isNotDefined(D_486511102,\"\"),false),or(equals(isNotDefined(D_455968200,\"\"),false),or(equals(isNotDefined(D_267027102,\"\"),false),or(equals(isNotDefined(D_728704613,\"\"),false),equals(isNotDefined(D_734345879,\"\"),false)))))))))))))", + "or(equals(D_983592172,353358909),or(equals(D_294308065,270752953),or(equals(isNotDefined(D_838725845,\"\"),false),or(equals(isNotDefined(D_565515774,\"\"),false),or(equals(isNotDefined(D_848348504,\"\"),false),or(equals(isNotDefined(D_742177990,\"\"),false),or(equals(isNotDefined(D_445867902,\"\"),false),or(equals(isNotDefined(D_843508307,\"\"),false),or(equals(isNotDefined(D_348049244,\"\"),false),or(equals(isNotDefined(D_554901696,\"\"),false),or(equals(isNotDefined(D_684217044,\"\"),false),or(equals(isNotDefined(D_819429013,\"\"),false),equals(isNotDefined(D_600319581,\"\"),false)))))))))))))", + "or(equals(D_776406200,353358909),or(equals(D_385583361,270752953),or(equals(isNotDefined(D_306805272,\"\"),false),or(equals(isNotDefined(D_819844467,\"\"),false),or(equals(isNotDefined(D_164233037,\"\"),false),or(equals(isNotDefined(D_418702418,\"\"),false),or(equals(isNotDefined(D_218334768,\"\"),false),or(equals(isNotDefined(D_101219440,\"\"),false),or(equals(isNotDefined(D_394294282,\"\"),false),or(equals(isNotDefined(D_127963610,\"\"),false),or(equals(isNotDefined(D_803526907,\"\"),false),or(equals(isNotDefined(D_882731998,\"\"),false),equals(isNotDefined(D_941168091,\"\"),false)))))))))))))", + "or(equals(D_135207939,353358909),or(equals(D_768802173,270752953),or(equals(isNotDefined(D_351559015,\"\"),false),or(equals(isNotDefined(D_903490632,\"\"),false),or(equals(isNotDefined(D_906119853,\"\"),false),or(equals(isNotDefined(D_703944664,\"\"),false),or(equals(isNotDefined(D_476697171,\"\"),false),or(equals(isNotDefined(D_390463636,\"\"),false),or(equals(isNotDefined(D_605344820,\"\"),false),or(equals(isNotDefined(D_256790385,\"\"),false),or(equals(isNotDefined(D_814644814,\"\"),false),or(equals(isNotDefined(D_915222355,\"\"),false),equals(isNotDefined(D_627992821,\"\"),false)))))))))))))", + "or(equals(D_647612167,353358909),or(equals(D_150560299,270752953),or(equals(isNotDefined(D_893639464,\"\"),false),or(equals(isNotDefined(D_438475588,\"\"),false),or(equals(isNotDefined(D_194165243,\"\"),false),or(equals(isNotDefined(D_744290061,\"\"),false),or(equals(isNotDefined(D_280877371,\"\"),false),or(equals(isNotDefined(D_516936572,\"\"),false),or(equals(isNotDefined(D_463064782,\"\"),false),or(equals(isNotDefined(D_673034401,\"\"),false),or(equals(isNotDefined(D_865310914,\"\"),false),or(equals(isNotDefined(D_489019597,\"\"),false),equals(isNotDefined(D_900377581,\"\"),false)))))))))))))", + "or(equals(D_532944666,353358909),or(equals(D_122054737,270752953),or(equals(isNotDefined(D_988266183,\"\"),false),or(equals(isNotDefined(D_709374950,\"\"),false),or(equals(isNotDefined(D_853931010,\"\"),false),or(equals(isNotDefined(D_351559021,\"\"),false),or(equals(isNotDefined(D_548773158,\"\"),false),or(equals(isNotDefined(D_290370013,\"\"),false),or(equals(isNotDefined(D_487043303,\"\"),false),or(equals(isNotDefined(D_453691095,\"\"),false),or(equals(isNotDefined(D_659122266,\"\"),false),or(equals(isNotDefined(D_202104231,\"\"),false),equals(isNotDefined(D_388427546,\"\"),false)))))))))))))", + "or(equals(D_548863580,353358909),or(equals(D_948492967,270752953),or(equals(isNotDefined(D_264707783,\"\"),false),or(equals(isNotDefined(D_666011940,\"\"),false),or(equals(isNotDefined(D_981594981,\"\"),false),or(equals(isNotDefined(D_282089547,\"\"),false),or(equals(isNotDefined(D_891573875,\"\"),false),or(equals(isNotDefined(D_612617245,\"\"),false),or(equals(isNotDefined(D_862255177,\"\"),false),or(equals(isNotDefined(D_674024553,\"\"),false),or(equals(isNotDefined(D_972332937,\"\"),false),or(equals(isNotDefined(D_886247195,\"\"),false),equals(isNotDefined(D_429200007,\"\"),false)))))))))))))", + "or(equals(D_124320444,353358909),or(equals(D_805353966,270752953),or(equals(isNotDefined(D_622968789,\"\"),false),or(equals(isNotDefined(D_696874548,\"\"),false),or(equals(isNotDefined(D_450630128,\"\"),false),or(equals(isNotDefined(D_309461541,\"\"),false),or(equals(isNotDefined(D_706592013,\"\"),false),or(equals(isNotDefined(D_789637860,\"\"),false),or(equals(isNotDefined(D_585473282,\"\"),false),or(equals(isNotDefined(D_795253129,\"\"),false),or(equals(isNotDefined(D_814137809,\"\"),false),or(equals(isNotDefined(D_780298998,\"\"),false),equals(isNotDefined(D_876521406,\"\"),false)))))))))))))", + "or(or(isNotDefined(D_556576930,false),isNotDefined(D_304326324,false)),or(isNotDefined(D_812433386,false),isNotDefined(D_477319994,false)))", + "exists('D_556576930')", + "doesNotExist(\"D_556576930\")", + "exists('D_304326324')", + "doesNotExist(\"D_304326324\")", + "exists('D_812433386')", + "doesNotExist(\"D_812433386\")", + "exists('D_477319994')", + "doesNotExist(\"D_477319994\")", + "noneExist(\"D_234037089\",\"D_416862112\") and someExist(\"D_416620941\",\"D_915859406\",\"D_354833686\",\"D_661148931\",\"D_556576930\",\"D_304326324\",\"D_812433386\",\"D_477319994\")", + "noneExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_661148931')", + "someExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_661148931')", + "or(or(isNotDefined(D_715370929,false),isNotDefined(D_109991481,false)),or(isNotDefined(D_494380686,false),isNotDefined(D_440796912,false)))", + "exists('D_715370929')", + "doesNotExist(\"D_715370929\")", + "exists('D_109991481')", + "doesNotExist(\"D_109991481\")", + "exists('D_494380686')", + "doesNotExist(\"D_494380686\")", + "exists('D_440796912')", + "doesNotExist(\"D_440796912\")", + "noneExist(\"D_476938134\",\"D_561635035\") and someExist(\"D_726739712\",\"D_149514187\",\"D_845446624\",\"D_677739650\",\"D_715370929\",\"D_109991481\",\"D_494380686\",\"D_440796912\")", + "noneExist('D_476938134','D_561635035','D_134210521','D_715370929','D_726739712','D_109991481','D_149514187','D_494380686','D_845446624','D_440796912','D_677739650')", + "someExist('D_476938134','D_561635035','D_134210521','D_715370929','D_726739712','D_109991481','D_149514187','D_494380686','D_845446624','D_440796912','D_677739650')", + "or(or(isNotDefined(D_113352592,false),isNotDefined(D_768114466,false)),or(isNotDefined(D_938180781,false),isNotDefined(D_733365745,false)))", + "exists('D_113352592')", + "doesNotExist(\"D_113352592\")", + "exists('D_768114466')", + "doesNotExist(\"D_768114466\")", + "exists('D_938180781')", + "doesNotExist(\"D_938180781\")", + "exists('D_733365745')", + "doesNotExist(\"D_733365745\")", + "noneExist(\"D_119483547\",\"D_194338739\") and someExist(\"D_148846635\",\"D_192663941\",\"D_245044197\",\"D_261025083\",\"D_113352592\",\"D_768114466\",\"D_938180781\",\"D_733365745\")", + "noneExist('D_119483547','D_194338739','D_387077376','D_113352592','D_148846635','D_768114466','D_192663941','D_938180781','D_245044197','D_733365745','D_261025083')", + "someExist('D_119483547','D_194338739','D_387077376','D_113352592','D_148846635','D_768114466','D_192663941','D_938180781','D_245044197','D_733365745','D_261025083')", + "or(or(isNotDefined(D_733619119,false),isNotDefined(D_843680322,false)),or(isNotDefined(D_716343828,false),isNotDefined(D_497260033,false)))", + "exists('D_733619119')", + "doesNotExist(\"D_733619119\")", + "exists('D_843680322')", + "doesNotExist(\"D_843680322\")", + "exists('D_716343828')", + "doesNotExist(\"D_716343828\")", + "exists('D_497260033')", + "doesNotExist(\"D_497260033\")", + "noneExist(\"D_785588454\",\"D_419659205\") and someExist(\"D_571926996\",\"D_645589113\",\"D_701056236\",\"D_398249766\",\"D_733619119\",\"D_843680322\",\"D_716343828\",\"D_497260033\")", + "noneExist('D_785588454','D_419659205','D_653181757','D_733619119','D_571926996','D_843680322','D_645589113','D_716343828','D_701056236','D_497260033','D_398249766')", + "someExist('D_785588454','D_419659205','D_653181757','D_733619119','D_571926996','D_843680322','D_645589113','D_716343828','D_701056236','D_497260033','D_398249766')", + "or(or(isNotDefined(D_570311888,false),isNotDefined(D_557852952,false)),or(isNotDefined(D_970217879,false),isNotDefined(D_452103273,false)))", + "exists('D_570311888')", + "doesNotExist(\"D_570311888\")", + "exists('D_557852952')", + "doesNotExist(\"D_557852952\")", + "exists('D_970217879')", + "doesNotExist(\"D_970217879\")", + "exists('D_452103273')", + "doesNotExist(\"D_452103273\")", + "displayif=noneExist(\"D_275244758\",\"D_688216428\") and someExist(\"D_101804763\",\"D_502068619\",\"D_787391994\",\"D_540340377\",\"D_570311888\",\"D_557852952\",\"D_970217879\",\"D_452103273\")", + "noneExist('D_275244758','D_688216428','D_843674851','D_570311888','D_101804763','D_557852952','D_502068619','D_970217879','D_787391994','D_452103273','D_540340377')", + "someExist('D_275244758','D_688216428','D_843674851','D_570311888','D_101804763','D_557852952','D_502068619','D_970217879','D_787391994','D_452103273','D_540340377')", + "or(or(isNotDefined(D_888514303,false),isNotDefined(D_905002640,false)),or(isNotDefined(D_687407917,false),isNotDefined(D_932828568,false)))", + "exists('D_888514303')", + "doesNotExist(\"D_888514303\")", + "exists('D_905002640')", + "doesNotExist(\"D_905002640\")", + "exists('D_687407917')", + "doesNotExist(\"D_687407917\")", + "exists('D_932828568')", + "doesNotExist(\"D_932828568\")", + "noneExist(\"D_666445636\",\"D_398622449\") and someExist(\"D_686611963\",\"D_900950849\",\"D_103689435\",\"D_659457234\",\"D_888514303\",\"D_905002640\",\"D_687407917\",\"D_932828568\")", + "noneExist('D_666445636','D_398622449','D_521925072','D_888514303','D_686611963','D_905002640','D_900950849','D_687407917','D_103689435','D_932828568','D_659457234')", + "someExist('D_666445636','D_398622449','D_521925072','D_888514303','D_686611963','D_905002640','D_900950849','D_687407917','D_103689435','D_932828568','D_659457234')", + "or(or(isNotDefined(D_384403974,false),isNotDefined(D_585153023,false)),or(isNotDefined(D_248996395,false),isNotDefined(D_525778327,false)))", + "exists('D_384403974')", + "doesNotExist(\"D_384403974\")", + "exists('D_585153023')", + "doesNotExist(\"D_585153023\")", + "exists('D_248996395')", + "doesNotExist(\"D_248996395\")", + "exists('D_525778327')", + "doesNotExist(\"D_525778327\")", + "noneExist(\"D_199489170\",\"D_605155921\") and someExist(\"D_860984191\",\"D_892150843\",\"D_230376384\",\"D_526462982\",\"D_384403974\",\"D_585153023\",\"D_248996395\",\"D_525778327\")", + "noneExist('D_199489170','D_605155921','D_300476868','D_384403974','D_860984191','D_585153023','D_892150843','D_248996395','D_230376384','D_525778327','D_526462982')", + "someExist('D_199489170','D_605155921','D_300476868','D_384403974','D_860984191','D_585153023','D_892150843','D_248996395','D_230376384','D_525778327','D_526462982')", + "or(or(isNotDefined(D_367684056,false),isNotDefined(D_389478638,false)),or(isNotDefined(D_949478044,false),isNotDefined(D_298170847,false)))", + "exists('D_367684056')", + "doesNotExist(\"D_367684056\")", + "exists('D_389478638')", + "doesNotExist(\"D_389478638\")", + "exists('D_949478044')", + "doesNotExist(\"D_949478044\")", + "exists('D_298170847')", + "doesNotExist(\"D_298170847\")", + "noneExist(\"D_295693777\",\"D_646099557\") and someExist(\"D_599753334\",\"D_467126157\",\"D_421779583\",\"D_587765197\",\"D_367684056\",\"D_389478638\",\"D_949478044\",\"D_298170847\")", + "noneExist('D_295693777','D_646099557','D_886284650','D_367684056','D_599753334','D_389478638','D_467126157','D_949478044','D_421779583','D_298170847','D_587765197')", + "someExist('D_295693777','D_646099557','D_886284650','D_367684056','D_599753334','D_389478638','D_467126157','D_949478044','D_421779583','D_298170847','D_587765197')", + "or(or(isNotDefined(D_711881258,false),isNotDefined(D_390941579,false)),or(isNotDefined(D_737885885,false),isNotDefined(D_603853574,false)))", + "exists('D_711881258')", + "doesNotExist(\"D_711881258\")", + "exists('D_390941579')", + "doesNotExist(\"D_390941579\")", + "exists('D_737885885')", + "doesNotExist(\"D_737885885\")", + "exists('D_603853574')", + "doesNotExist(\"D_603853574\")", + "noneExist(\"D_143093472\",\"D_746619983\") and someExist(\"D_450433102\",\"D_181005197\",\"D_855530921\",\"D_589689090\",\"D_711881258\",\"D_390941579\",\"D_737885885\",\"D_603853574\")", + "noneExist('D_143093472','D_746619983','D_911964974','D_711881258','D_450433102','D_390941579','D_181005197','D_737885885','D_855530921','D_603853574','D_589689090')", + "someExist('D_143093472','D_746619983','D_911964974','D_711881258','D_450433102','D_390941579','D_181005197','D_737885885','D_855530921','D_603853574','D_589689090')", + "or(or(isNotDefined(D_160188014,false),isNotDefined(D_596751155,false)),or(isNotDefined(D_624226136,false),isNotDefined(D_807127029,false)))", + "exists('D_160188014')", + "doesNotExist(\"D_160188014\")", + "exists('D_596751155')", + "doesNotExist(\"D_596751155\")", + "exists('D_624226136')", + "doesNotExist(\"D_624226136\")", + "exists('D_807127029')", + "doesNotExist(\"D_807127029\")", + "noneExist(\"D_117703279\",\"D_734790700\") and someExist(\"D_983038259\",\"D_313586037\",\"D_158186064\",\"D_274940131\",\"D_160188014\",\"D_596751155\",\"D_624226136\",\"D_807127029\")", + "noneExist('D_117703279','D_734790700','D_278164536','D_160188014','D_983038259','D_596751155','D_313586037','D_624226136','D_158186064','D_807127029','D_274940131')", + "someExist('D_117703279','D_734790700','D_278164536','D_160188014','D_983038259','D_596751155','D_313586037','D_624226136','D_158186064','D_807127029','D_274940131')", + "or(equals(D_342677547,353358909),or(equals(D_710449106,991158851),or(equals(isNotDefined(D_234037089,\"\"),false),or(equals(isNotDefined(D_416862112,\"\"),false),or(equals(isNotDefined(D_671149035,\"\"),false),or(equals(isNotDefined(D_556576930,\"\"),false),or(equals(isNotDefined(D_416620941,\"\"),false),or(equals(isNotDefined(D_304326324,\"\"),false),or(equals(isNotDefined(D_915859406,\"\"),false),or(equals(isNotDefined(D_812433386,\"\"),false),or(equals(isNotDefined(D_354833686,\"\"),false),or(equals(isNotDefined(D_477319994,\"\"),false),equals(isNotDefined(D_661148931,\"\"),false)))))))))))))", + "or(equals(D_576956950,353358909),or(equals(D_512143997,171498611),or(equals(isNotDefined(D_476938134,\"\"),false),or(equals(isNotDefined(D_561635035,\"\"),false),or(equals(isNotDefined(D_134210521,\"\"),false),or(equals(isNotDefined(D_715370929,\"\"),false),or(equals(isNotDefined(D_726739712,\"\"),false),or(equals(isNotDefined(D_109991481,\"\"),false),or(equals(isNotDefined(D_149514187,\"\"),false),or(equals(isNotDefined(D_494380686,\"\"),false),or(equals(isNotDefined(D_845446624,\"\"),false),or(equals(isNotDefined(D_440796912,\"\"),false),equals(isNotDefined(D_677739650,\"\"),false)))))))))))))", + "or(equals(D_463952618,353358909),or(equals(D_982650994,171498611),or(equals(isNotDefined(D_119483547,\"\"),false),or(equals(isNotDefined(D_194338739,\"\"),false),or(equals(isNotDefined(D_387077376,\"\"),false),or(equals(isNotDefined(D_113352592,\"\"),false),or(equals(isNotDefined(D_148846635,\"\"),false),or(equals(isNotDefined(D_768114466,\"\"),false),or(equals(isNotDefined(D_192663941,\"\"),false),or(equals(isNotDefined(D_938180781,\"\"),false),or(equals(isNotDefined(D_245044197,\"\"),false),or(equals(isNotDefined(D_733365745,\"\"),false),equals(isNotDefined(D_261025083,\"\"),false)))))))))))))", + "or(equals(D_959488634,353358909),or(equals(D_945794974,171498611),or(equals(isNotDefined(D_785588454,\"\"),false),or(equals(isNotDefined(D_419659205,\"\"),false),or(equals(isNotDefined(D_653181757,\"\"),false),or(equals(isNotDefined(D_733619119,\"\"),false),or(equals(isNotDefined(D_571926996,\"\"),false),or(equals(isNotDefined(D_843680322,\"\"),false),or(equals(isNotDefined(D_645589113,\"\"),false),or(equals(isNotDefined(D_716343828,\"\"),false),or(equals(isNotDefined(D_701056236,\"\"),false),or(equals(isNotDefined(D_497260033,\"\"),false),equals(isNotDefined(D_398249766,\"\"),false)))))))))))))", + "or(equals(D_696017690,353358909),or(equals(D_663869343,171498611),or(equals(isNotDefined(D_275244758,\"\"),false),or(equals(isNotDefined(D_688216428,\"\"),false),or(equals(isNotDefined(D_843674851,\"\"),false),or(equals(isNotDefined(D_570311888,\"\"),false),or(equals(isNotDefined(D_101804763,\"\"),false),or(equals(isNotDefined(D_557852952,\"\"),false),or(equals(isNotDefined(D_502068619,\"\"),false),or(equals(isNotDefined(D_970217879,\"\"),false),or(equals(isNotDefined(D_787391994,\"\"),false),or(equals(isNotDefined(D_452103273,\"\"),false),equals(isNotDefined(D_540340377,\"\"),false)))))))))))))", + "or(equals(D_424272506,353358909),or(equals(D_275978701,171498611),or(equals(isNotDefined(D_666445636,\"\"),false),or(equals(isNotDefined(D_398622449,\"\"),false),or(equals(isNotDefined(D_521925072,\"\"),false),or(equals(isNotDefined(D_888514303,\"\"),false),or(equals(isNotDefined(D_686611963,\"\"),false),or(equals(isNotDefined(D_905002640,\"\"),false),or(equals(isNotDefined(D_900950849,\"\"),false),or(equals(isNotDefined(D_687407917,\"\"),false),or(equals(isNotDefined(D_103689435,\"\"),false),or(equals(isNotDefined(D_932828568,\"\"),false),equals(isNotDefined(D_659457234,\"\"),false)))))))))))))", + "or(equals(D_484550481,353358909),or(equals(D_195803565,171498611),or(equals(isNotDefined(D_199489170,\"\"),false),or(equals(isNotDefined(D_605155921,\"\"),false),or(equals(isNotDefined(D_300476868,\"\"),false),or(equals(isNotDefined(D_384403974,\"\"),false),or(equals(isNotDefined(D_860984191,\"\"),false),or(equals(isNotDefined(D_585153023,\"\"),false),or(equals(isNotDefined(D_892150843,\"\"),false),or(equals(isNotDefined(D_248996395,\"\"),false),or(equals(isNotDefined(D_230376384,\"\"),false),or(equals(isNotDefined(D_525778327,\"\"),false),equals(isNotDefined(D_526462982,\"\"),false)))))))))))))", + "or(equals(D_773680071,353358909),or(equals(D_282326355,171498611),or(equals(isNotDefined(D_295693777,\"\"),false),or(equals(isNotDefined(D_646099557,\"\"),false),or(equals(isNotDefined(D_886284650,\"\"),false),or(equals(isNotDefined(D_367684056,\"\"),false),or(equals(isNotDefined(D_599753334,\"\"),false),or(equals(isNotDefined(D_389478638,\"\"),false),or(equals(isNotDefined(D_467126157,\"\"),false),or(equals(isNotDefined(D_949478044,\"\"),false),or(equals(isNotDefined(D_421779583,\"\"),false),or(equals(isNotDefined(D_298170847,\"\"),false),equals(isNotDefined(D_587765197,\"\"),false)))))))))))))", + "or(equals(D_348817644,353358909),or(equals(D_141249692,171498611),or(equals(isNotDefined(D_143093472,\"\"),false),or(equals(isNotDefined(D_746619983,\"\"),false),or(equals(isNotDefined(D_911964974,\"\"),false),or(equals(isNotDefined(D_711881258,\"\"),false),or(equals(isNotDefined(D_450433102,\"\"),false),or(equals(isNotDefined(D_390941579,\"\"),false),or(equals(isNotDefined(D_181005197,\"\"),false),or(equals(isNotDefined(D_737885885,\"\"),false),or(equals(isNotDefined(D_855530921,\"\"),false),or(equals(isNotDefined(D_603853574,\"\"),false),equals(isNotDefined(D_589689090,\"\"),false)))))))))))))", + "or(equals(D_800194290,353358909),or(equals(D_494968690,171498611),or(equals(isNotDefined(D_117703279,\"\"),false),or(equals(isNotDefined(D_734790700,\"\"),false),or(equals(isNotDefined(D_278164536,\"\"),false),or(equals(isNotDefined(D_160188014,\"\"),false),or(equals(isNotDefined(D_983038259,\"\"),false),or(equals(isNotDefined(D_596751155,\"\"),false),or(equals(isNotDefined(D_313586037,\"\"),false),or(equals(isNotDefined(D_624226136,\"\"),false),or(equals(isNotDefined(D_158186064,\"\"),false),or(equals(isNotDefined(D_807127029,\"\"),false),equals(isNotDefined(D_274940131,\"\"),false)))))))))))))", + "noneExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_274940131')", + "someExist('D_234037089','D_416862112','D_671149035','D_556576930','D_416620941','D_304326324','D_915859406','D_812433386','D_354833686','D_477319994','D_274940131')", + "someExist(\"D_985267931\",\"D_111275683\",\"D_129226572\",\"D_536516743\",\"D_288498031\",\"D_283900560\",\"D_195845897\",\"D_467947502\",\"D_936129960\",\"D_368486703\",\"D_924583345\")|valueEquals(\"D_290969423\",353358909)|valueEquals(\"D_869829679\",270752953)", + "someExist(\"D_875706715\",\"D_645150792\",\"D_585360350\",\"D_588699608\",\"D_648495207\",\"D_544692849\",\"D_300933270\",\"D_335435992\",\"D_649864362\",\"D_337088272\",\"D_723108194\")|valueEquals(\"D_862052821\",353358909)|valueEquals(\"D_845483079\",270752953)", + "someExist(\"D_130174162\",\"D_563832508\",\"D_817839081\",\"D_930511603\",\"D_931999203\",\"D_756548442\",\"D_486511102\",\"D_455968200\",\"D_267027102\",\"D_728704613\",\"D_734345879\")|valueEquals(\"D_593146348\",353358909)|valueEquals(\"D_736086261\",270752953)", + "someExist(\"D_838725845\",\"D_565515774\",\"D_848348504\",\"D_742177990\",\"D_445867902\",\"D_843508307\",\"D_348049244\",\"D_554901696\",\"D_684217044\",\"D_819429013\",\"D_600319581\")|valueEquals(\"D_983592172\",353358909)|valueEquals(\"D_294308065\",270752953)", + "someExist(\"D_306805272\",\"D_819844467\",\"D_164233037\",\"D_418702418\",\"D_218334768\",\"D_101219440\",\"D_394294282\",\"D_127963610\",\"D_803526907\",\"D_882731998\",\"D_941168091\")|valueEquals(\"D_776406200\",353358909)|valueEquals(\"D_385583361\",270752953)", + "someExist(\"D_351559015\",\"D_903490632\",\"D_906119853\",\"D_703944664\",\"D_476697171\",\"D_390463636\",\"D_605344820\",\"D_256790385\",\"D_814644814\",\"D_915222355\",\"D_627992821\")|valueEquals(\"D_135207939\",353358909)|valueEquals(\"D_768802173\",270752953)", + "someExist(\"D_893639464\",\"D_438475588\",\"D_194165243\",\"D_744290061\",\"D_280877371\",\"D_516936572\",\"D_463064782\",\"D_673034401\",\"D_865310914\",\"D_489019597\",\"D_900377581\")|valueEquals(\"D_647612167\",353358909)|valueEquals(\"D_150560299\",270752953)", + "someExist(\"D_988266183\",\"D_709374950\",\"D_853931010\",\"D_351559021\",\"D_548773158\",\"D_290370013\",\"D_487043303\",\"D_453691095\",\"D_659122266\",\"D_202104231\",\"D_388427546\")|valueEquals(\"D_532944666\",353358909)|valueEquals(\"D_122054737\",270752953)", + "someExist(\"D_264707783\",\"D_666011940\",\"D_981594981\",\"D_282089547\",\"D_891573875\",\"D_612617245\",\"D_862255177\",\"D_674024553\",\"D_972332937\",\"D_886247195\",\"D_429200007\")|valueEquals(\"D_548863580\",353358909)|valueEquals(\"D_948492967\",270752953)", + "someExist(\"D_622968789\",\"D_696874548\",\"D_450630128\",\"D_309461541\",\"D_706592013\",\"D_789637860\",\"D_585473282\",\"D_795253129\",\"D_814137809\",\"D_780298998\",\"D_876521406\")|valueEquals(\"D_124320444\",353358909)|valueEquals(\"D_805353966\",270752953)", + "equals(isDefined(D_720221117,-1),-1)", + "and(equals(isDefined(D_720221117,-1),-1),or(or(isNotDefined(D_128827522,false),isNotDefined(D_439447560,false)),or(isNotDefined(D_286781627,false),isNotDefined(D_733929451,false))))", + "exists('D_128827522')", + "doesNotExist(\"D_128827522\")", + "exists('D_439447560')", + "doesNotExist(\"D_439447560\")", + "exists('D_286781627')", + "doesNotExist(\"D_286781627\")", + "exists('D_733929451')", + "doesNotExist(\"D_733929451\")", + "noneExist(\"D_284547539\",\"D_802585033\") and someExist(\"D_890792569\",\"D_451394598\",\"D_984908796\",\"D_847327251\",\"D_128827522\",\"D_439447560\",\"D_286781627\",\"D_733929451\")", + "noneExist('D_284547539','D_802585033','D_746533238','D_128827522','D_890792569','D_439447560','D_451394598','D_286781627','D_984908796','D_733929451','D_847327251') and not valueEquals('D_277348878',778052314)", + "someExist('D_284547539','D_802585033','D_746533238','D_128827522','D_890792569','D_439447560','D_451394598','D_286781627','D_984908796','D_733929451','D_847327251')", + "equals(D_720221117,658491312)", + "equals(D_720221117,351928156)", + "equals(D_720221117,510681016)", + "equals(D_720221117,451961786)", + "equals(D_720221117,902342161)", + "equals(D_720221117,928670216)", + "equals(D_720221117,354020985)", + "equals(D_720221117,583113200)", + "equals(D_720221117,458045785)", + "equals(D_720221117,487265825)", + "equals(D_720221117,883331099)", + "not valueIsOneOf('D_720221117',658491312,351928156,510681016,451961786,902342161,928670216,354020985,583113200,458045785,487265825,883331099) and valueEquals('D_277348878',778052314)", + "noneExist('D_255248624','D_945532934','D_469838242','D_303500597','D_725583683','D_195068098','D_917021073','D_202784871','D_970000442','D_831127170','D_500100435') and valueEquals('D_720221117',658491312)", + "noneExist('D_985267931','D_111275683','D_129226572','D_536516743','D_288498031','D_283900560','D_195845897','D_467947502','D_936129960','D_368486703','D_924583345') and valueEquals('D_720221117',351928156)", + "noneExist('D_875706715','D_645150792','D_585360350','D_588699608','D_648495207','D_544692849','D_300933270','D_335435992','D_649864362','D_337088272','D_723108194') and valueEquals('D_720221117',510681016)", + "noneExist('D_130174162','D_563832508','D_817839081','D_930511603','D_931999203','D_756548442','D_486511102','D_455968200','D_267027102','D_728704613','D_734345879') and valueEquals('D_720221117',451961786)", + "noneExist('D_838725845','D_565515774','D_848348504','D_742177990','D_445867902','D_843508307','D_348049244','D_554901696','D_684217044','D_819429013','D_600319581') and valueEquals('D_720221117',902342161)", + "noneExist('D_306805272','D_819844467','D_164233037','D_418702418','D_218334768','D_101219440','D_394294282','D_127963610','D_803526907','D_882731998','D_941168091') and valueEquals('D_720221117',928670216)", + "noneExist('D_351559015','D_903490632','D_906119853','D_703944664','D_476697171','D_390463636','D_605344820','D_256790385','D_814644814','D_915222355','D_627992821') and valueEquals('D_720221117',354020985)", + "noneExist('D_893639464','D_438475588','D_194165243','D_744290061','D_280877371','D_516936572','D_463064782','D_673034401','D_865310914','D_489019597','D_900377581') and valueEquals('D_720221117',583113200)", + "noneExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546') and valueEquals('D_720221117',458045785)", + "noneExist('D_264707783','D_666011940','D_981594981','D_282089547','D_891573875','D_612617245','D_862255177','D_674024553','D_972332937','D_886247195','D_429200007') and valueEquals('D_720221117',487265825)", + "noneExist('D_622968789','D_696874548','D_450630128','D_309461541','D_706592013','D_789637860','D_585473282','D_795253129','D_814137809','D_780298998','D_876521406') and valueEquals('D_720221117',883331099)", + "noneExist('D_988266183','D_709374950','D_853931010','D_351559021','D_548773158','D_290370013','D_487043303','D_453691095','D_659122266','D_202104231','D_388427546')and valueEquals('D_720221117',458045785)", + "equals(D_831438612,863839736)", + "equals(D_831438612,531671855)", + "equals(D_831438612,525375987)", + "equals(D_831438612,995797773)", + "equals(D_831438612,431441193)", + "exists('D_834822910')", + "doesNotExist('D_834822910')", + "or(or(isNotDefined(D_627183798,false),isNotDefined(D_901141257,false)),or(isNotDefined(D_599770535,false),isNotDefined(D_268600708,false)))", + "exists('D_627183798')", + "doesNotExist(\"D_627183798\")", + "exists('D_901141257')", + "doesNotExist(\"D_901141257\")", + "exists('D_599770535')", + "doesNotExist(\"D_599770535\")", + "exists('D_268600708')", + "doesNotExist(\"D_268600708\")", + "noneExist(\"D_307515427\",\"D_422521705\") and someExist(\"D_627183798\",\"D_901141257\",\"D_599770535\",\"D_268600708\",\"D_515150210\",\"D_182449282\",\"D_609408466\",\"D_702591232\")", + "noneExist('D_627183798','D_901141257','D_599770535','D_268600708','D_515150210','D_182449282','D_609408466','D_702591232')", + "someExist('D_627183798','D_901141257','D_599770535','D_268600708','D_515150210','D_182449282','D_609408466','D_702591232')", + "valueIsOneOf(\"D_421586693\",767755239,385609081,502946054,151757360,363747463,626380300,817932069,466212511)", + "equals(D_421586693,767755239)", + "equals(D_421586693,385609081)", + "equals(D_421586693,502946054)", + "equals(D_421586693,151757360)", + "equals(D_421586693,363747463)", + "equals(D_421586693,626380300)", + "equals(D_421586693,817932069)", + "equals(D_421586693,466212511)", + "valueIsOneOf(\"D_583216333\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_920653797\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_843066684\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_101850740\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_583216333\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_920653797\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_843066684\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_101850740\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_317194063\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_621948602\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_175502589\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_614443767\",248303092,998679771,638092100,127455035)", + "doesNotEqual(D_614208066,353358909)", + "(not(equals(\"D_614208066\",353358909)) and valueIsOneOf(\"D_799598595\",339946103,364857371,315356220,363036517,978362655,175003260,648051649,957052257)) or (not(equals(\"D_308634850\",353358909)) and valueIsOneOf(\"D_421586693\",767755239,385609081,502946054,151757360,363747463,626380300,817932069,466212511))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,339946103)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,767755239)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,364857371)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,385609081)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,315356220)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,502946054)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,363036517)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,151757360)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,978362655)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,363747463)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,175003260)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,626380300)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,648051649)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,817932069)),equals(D_614208066,353358909)))", + "or(and(doesNotEqual(D_614208066,353358909),equals(D_799598595,957052257)),and(and(doesNotEqual(D_308634850,353358909),equals(D_421586693,466212511)),equals(D_614208066,353358909)))", + "valueIsOneOf(\"D_827461454\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_306356124\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_884514292\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_570556451\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_827461454\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_306356124\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_884514292\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_570556451\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_303089793\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_848543458\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_543804307\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_654108399\",248303092,998679771,638092100,127455035)", + "valueEquals(\"D_694113343\",353358909) and valueEquals(\"D_699873889\",353358909)", + "or(doesNotEqual(D_576417612,816566846),and(equals(D_694113343,353358909),doesNotEqual(D_699873889,353358909)))", + "and(and(equals(D_576417612,816566846),doesNotEqual(D_871276836,104430631)),equals(D_858178137,353358909))", + "and(equals(D_576417612,816566846),doesNotEqual(D_871276836,104430631))", + "valueEquals(\"D_576417612\",816566846) and valueEquals(\"D_871276836\",104430631)", + "and(equals(D_694113343,353358909),or(equals(D_970148613,353358909),equals(D_374639590,104430631)))", + "equals(D_576417612,816566846)", + "equals(D_374639590,104430631)", + "and(and(equals(D_694113343,353358909),or(equals(D_970148613,353358909),equals(D_374639590,104430631))),doesNotEqual(D_858178137,353358909))", + "valueEquals(\"D_970148613\",353358909) and someExist(\"D_560853245\",\"D_307515427\",\"D_422521705\",\"D_330163034\",\"D_555595404\",\"D_146107174\",\"D_627183798\",\"D_901141257\",\"D_599770535\",\"D_268600708\",\"D_515150210\",\"D_182449282\",\"D_609408466\",\"D_702591232\")", + "or(and(or(equals(D_828801156,759356722),equals(D_828801156,185036360)),equals(D_374639590,104430631)),doesNotEqual(D_211472150,353358909))", + "and(or(and(or(equals(D_828801156,759356722),equals(D_828801156,185036360)),equals(D_374639590,104430631)),doesNotEqual(D_211472150,353358909)),or(or(isNotDefined(D_959804472,false),isNotDefined(D_774707280,false)),or(isNotDefined(D_182144476,false),isNotDefined(D_294634899,false))))", + "exists('D_959804472')", + "doesNotExist(\"D_959804472\")", + "exists('D_774707280')", + "doesNotExist(\"D_774707280\")", + "exists('D_182144476')", + "doesNotExist(\"D_182144476\")", + "exists('D_294634899')", + "doesNotExist(\"D_294634899\")", + "noneExist(\"D_493984171\",\"D_253017624\") and someExist(\"D_959804472\",\"D_774707280\",\"D_182144476\",\"D_294634899\", \"D_583500714\",\"D_742105146\",\"D_101341673\",\"D_237204853\")", + "someExist('D_493984171','D_253017624','D_404141282','D_959804472','D_583500714','D_774707280','D_742105146','D_182144476','D_101341673','D_294634899','D_237204853')", + "noneExist('D_493984171','D_253017624','D_404141282','D_959804472','D_583500714','D_774707280','D_742105146','D_182144476','D_101341673','D_294634899','D_237204853')", + "or(equals(isNotDefined(D_493984171,''),false),or(equals(isNotDefined(D_253017624,''),false),or(equals(isNotDefined(D_404141282,''),false),or(equals(isNotDefined(D_959804472,''),false),or(equals(isNotDefined(D_583500714,''),false),or(equals(isNotDefined(D_774707280,''),false),or(equals(isNotDefined(D_742105146,''),false),or(equals(isNotDefined(D_182144476,''),false),or(equals(isNotDefined(D_101341673,''),false),or(equals(isNotDefined(D_294634899,''),false),equals(isNotDefined(D_237204853,''),false)))))))))))", + "and(equals(isNotDefined(D_493984171,''),true),and(equals(isNotDefined(D_253017624,''),true),and(equals(isNotDefined(D_404141282,''),true),and(equals(isNotDefined(D_959804472,''),true),and(equals(isNotDefined(D_583500714,''),true),and(equals(isNotDefined(D_774707280,''),true),and(equals(isNotDefined(D_742105146,''),true),and(equals(isNotDefined(D_182144476,''),true),and(equals(isNotDefined(D_101341673,''),true),and(equals(isNotDefined(D_294634899,''),true),equals(isNotDefined(D_237204853,''),true)))))))))))", + "equals(D_635467479,158795242)", + "equals(D_635467479,443596662)", + "equals(D_635467479,892894242)", + "equals(D_635467479,177539753)", + "equals(D_635467479,107659596)", + "equals(D_635467479,575883949)", + "equals(D_635467479,248168118)", + "equals(D_635467479,509121242)", + "valueIsOneOf(\"D_593010802\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453004768\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_511991969\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_546570171\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_593010802\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453004768\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_511991969\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_546570171\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_242761203\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_587434250\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_569993305\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_662584384\",248303092,998679771,638092100,127455035)", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,581991828)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,158795242)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,846844103)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,443596662)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,660927579)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,892894242)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,940452831)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,177539753)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,669359763)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,107659596)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,950972496)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,575883949)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,137216656)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,248168118)),equals(D_684542266,353358909)))", + "or(and(doesNotEqual(D_684542266,353358909),equals(D_404697804,244488084)),and(and(doesNotEqual(D_203943120,353358909),equals(D_635467479,509121242)),equals(D_684542266,353358909)))", + "valueIsOneOf(\"D_659799855\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_552410034\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_772382520\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_146307133\",248303092,998679771,638092100,127455035)", + "valueIsOneOf(\"D_659799855\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_552410034\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_772382520\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_146307133\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_100591237\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_823402922\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_289302451\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_419151253\",248303092,998679771,638092100,127455035)", + "or(equals(D_858178137,353358909),equals(D_635780118,353358909))", + "and(doesNotEqual(D_694113343,353358909),doesNotEqual(D_699873889,353358909))", + "or(or(isNotDefined(D_962868433,false),isNotDefined(D_108530997,false)),or(isNotDefined(D_110852652,false),isNotDefined(D_867109611,false)))", + "exists('D_962868433')", + "doesNotExist(\"D_962868433\")", + "exists('D_108530997')", + "doesNotExist(\"D_108530997\")", + "exists('D_110852652')", + "doesNotExist(\"D_110852652\")", + "exists('D_867109611')", + "doesNotExist(\"D_867109611\")", + "noneExist(\"D_903896611\",\"D_855583262\") and someExist(\"D_962868433\",\"D_108530997\",\"D_110852652\",\"D_867109611\",\"D_652022112\",\"D_730666903\",\"D_168091937\",\"D_132779701\")", + "someExist('D_903896611','D_855583262','D_371588177','D_962868433','D_652022112','D_108530997','D_730666903','D_110852652','D_168091937','D_867109611','D_132779701')", + "noneExist('D_903896611','D_855583262','D_371588177','D_962868433','D_652022112','D_108530997','D_730666903','D_110852652','D_168091937','D_867109611','D_132779701')", + "or(equals(isNotDefined(D_903896611,''),false),or(equals(isNotDefined(D_855583262,''),false),or(equals(isNotDefined(D_371588177,''),false),or(equals(isNotDefined(D_962868433,''),false),or(equals(isNotDefined(D_652022112,''),false),or(equals(isNotDefined(D_108530997,''),false),or(equals(isNotDefined(D_730666903,''),false),or(equals(isNotDefined(D_110852652,''),false),or(equals(isNotDefined(D_168091937,''),false),or(equals(isNotDefined(D_867109611,''),false),equals(isNotDefined(D_132779701,''),false)))))))))))", + "and(equals(isNotDefined(D_903896611,''),true),and(equals(isNotDefined(D_855583262,''),true),and(equals(isNotDefined(D_371588177,''),true),and(equals(isNotDefined(D_962868433,''),true),and(equals(isNotDefined(D_652022112,''),true),and(equals(isNotDefined(D_108530997,''),true),and(equals(isNotDefined(D_730666903,''),true),and(equals(isNotDefined(D_110852652,''),true),and(equals(isNotDefined(D_168091937,''),true),and(equals(isNotDefined(D_867109611,''),true),equals(isNotDefined(D_132779701,''),true)))))))))))", + "equals(D_311891586,172103427)", + "equals(D_311891586,794959813)", + "equals(D_311891586,683306241)", + "equals(D_311891586,116442173)", + "equals(D_311891586,639735881)", + "equals(D_311891586,296254034)", + "equals(D_311891586,807973203)", + "equals(D_311891586,766970054)", + "doesNotEqual(D_564557026,353358909)", + "or(doesNotEqual(D_839233937,353358909),doesNotEqual(D_564557026,353358909))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,450075248)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,172103427)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,471142791)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,794959813)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,197093427)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,683306241)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,779421821)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,116442173)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,925663113)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,639735881)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,368973683)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,296254034)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,830201925)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,807973203)),equals(D_564557026,353358909)))", + "or(and(doesNotEqual(D_564557026,353358909),equals(D_251048648,572643998)),and(and(doesNotEqual(D_839233937,353358909),equals(D_311891586,766970054)),equals(D_564557026,353358909)))", + "or(equals(D_784967158,551525967),equals(D_784967158,738284740))", + "and(or(equals(D_784967158,551525967),equals(D_784967158,738284740)),or(or(isNotDefined(D_161170041,false),isNotDefined(D_660217075,false)),or(isNotDefined(D_884494489,false),isNotDefined(D_403679963,false))))", + "exists('D_161170041')", + "doesNotExist(\"D_161170041\")", + "exists('D_660217075')", + "doesNotExist(\"D_660217075\")", + "exists('D_884494489')", + "doesNotExist(\"D_884494489\")", + "exists('D_403679963')", + "doesNotExist(\"D_403679963\")", + "noneExist(\"D_970996351\",\"D_249657148\") and someExist(\"D_161170041\",\"D_660217075\",\"D_884494489\",\"D_403679963\",\"D_225725599\",\"D_977086216\",\"D_997041632\",\"D_147113671\")", + "someExist('D_970996351','D_249657148','D_190883115','D_161170041','D_225725599','D_660217075','D_977086216','D_884494489','D_997041632','D_403679963','D_147113671')", + "noneExist('D_970996351','D_249657148','D_190883115','D_161170041','D_225725599','D_660217075','D_977086216','D_884494489','D_997041632','D_403679963','D_147113671')", + "or(equals(isNotDefined(D_970996351,''),false),or(equals(isNotDefined(D_249657148,''),false),or(equals(isNotDefined(D_190883115,''),false),or(equals(isNotDefined(D_161170041,''),false),or(equals(isNotDefined(D_225725599,''),false),or(equals(isNotDefined(D_660217075,''),false),or(equals(isNotDefined(D_977086216,''),false),or(equals(isNotDefined(D_884494489,''),false),or(equals(isNotDefined(D_997041632,''),false),or(equals(isNotDefined(D_403679963,''),false),equals(isNotDefined(D_147113671,''),false)))))))))))", + "and(equals(isNotDefined(D_970996351,''),true),and(equals(isNotDefined(D_249657148,''),true),and(equals(isNotDefined(D_190883115,''),true),and(equals(isNotDefined(D_161170041,''),true),and(equals(isNotDefined(D_225725599,''),true),and(equals(isNotDefined(D_660217075,''),true),and(equals(isNotDefined(D_977086216,''),true),and(equals(isNotDefined(D_884494489,''),true),and(equals(isNotDefined(D_997041632,''),true),and(equals(isNotDefined(D_403679963,''),true),equals(isNotDefined(D_147113671,''),true)))))))))))", + "equals(D_404863614,782113721)", + "equals(D_404863614,207263450)", + "equals(D_404863614,638833327)", + "equals(D_404863614,736981982)", + "equals(D_404863614,932195315)", + "equals(D_404863614,279026426)", + "equals(D_404863614,691579493)", + "equals(D_404863614,211269389)", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_891237683\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_980695076\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_265423096\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_185533250\",248303092,998679771,638092100,127455035))", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_891237683\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_980695076\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_265423096\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_185533250\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_769785846\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_330492115\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_173979298\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_154229258\",248303092,998679771,638092100,127455035))", + "and(doesNotEqual(D_496801729,353358909),or(equals(D_784967158,551525967),equals(D_784967158,738284740)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,467242967)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,782113721)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,645051966)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,207263450)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,756061540)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,638833327)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,198883577)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,736981982)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,634680635)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,932195315)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,790657437)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,279026426)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,107428524)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,691579493)),equals(D_496801729,353358909)))", + "or(and(doesNotEqual(D_496801729,353358909),equals(D_345355061,804918983)),and(and(doesNotEqual(D_230528407,353358909),equals(D_404863614,211269389)),equals(D_496801729,353358909)))", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_990162153\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_576149634\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_291458877\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453417964\",248303092,998679771,638092100,127455035))", + "valueIsOneOf(\"D_784967158\",551525967,738284740) and (valueIsOneOf(\"D_990162153\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_576149634\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_291458877\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_453417964\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_550646850\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_949549557\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_214274185\",248303092,998679771,638092100,127455035) or valueIsOneOf(\"D_533003859\",248303092,998679771,638092100,127455035))" + ], + "sitesByScope": { + "element": 104, + "inline": 683, + "question": 230, + "response": 330 + }, + "sitesByAttribute": { + "displayif": 1347 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 367, + "processorQuestionCount": 367, + "processedQuestionCount": 367, + "renderedFormCount": 367, + "controlCount": 2818, + "responseControlCount": 1677, + "explicitTransitionCount": 259, + "sequentialAdjacencyCount": 366, + "resolvedExplicitTransitionCount": 259, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1347, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 478 + } + }, + { + "schemaVersion": 1, + "module": "moduleBiospecimen", + "locale": "en", + "language": "en", + "path": "prod/moduleBiospecimen.txt", + "sha256": "3511079715fecaf0498d2a3f197f3cce400a9a4674af0947ff740b68ddfb5d22", + "questName": "D_299215535", + "version": "1.4", + "authoredMarkerCount": 52, + "runtimeQuestionIds": [ + "SRVBIO_MODULEINTRO_V1R0", + "D_522008539?", + "D_470484596?", + "D_867307558?", + "D_191057574_V2?", + "D_299417266_V2?", + "D_689861450_V2?", + "D_487532606", + "SRVBLU_REPROINTRO_V1R0", + "D_380603392!", + "D_112151599!", + "D_644459734!", + "D_518916981?", + "D_234714655?", + "D_798452445?", + "D_563539159?", + "D_875535246?", + "D_130311122?", + "D_350251057?", + "D_877878167?", + "D_800703566?", + "D_294886836?", + "D_642044281?", + "D_479143504?", + "D_498984275?", + "D_205713835?", + "D_353467497?", + "D_429994023?", + "D_499977481?", + "D_406270109?", + "D_349659426?", + "D_766370065?", + "D_520416570?", + "D_921972241?", + "D_526973271?", + "D_460873842?", + "D_430060900?", + "D_800752981?", + "D_899251483_V2?", + "D_724589244?", + "D_957305523?", + "D_360678252?", + "D_542661394?", + "D_339570897?", + "D_983043203?", + "D_736028153?", + "D_792134396?", + "D_736393021?", + "D_318641324?", + "END" + ], + "responseControlsByType": { + "checkbox": 31, + "date": 1, + "radio": 168, + "time": 3 + }, + "explicitTransitions": { + "targets": [ + "D_299417266_V2", + "D_518916981", + "D_798452445", + "D_875535246", + "D_498984275", + "D_205713835", + "D_353467497", + "D_429994023", + "D_499977481", + "D_406270109", + "D_349659426", + "D_766370065", + "D_520416570", + "D_921972241", + "D_526973271", + "D_460873842", + "D_430060900", + "D_800752981", + "D_724589244", + "D_957305523", + "D_360678252", + "END" + ], + "byKind": { + "no-response": 1, + "response": 24 + }, + "byResolution": { + "exact": 22, + "terminal": 3 + }, + "triggerTypes": { + "checkbox": 17, + "hidden": 1, + "radio": 7 + }, + "triggerValues": [ + "330461666", + "104430631", + "353358909", + "203919683", + "807884576", + "165596977", + "578402172", + "184513726", + "390351864", + "950773275", + "762727133", + "877842367", + "886771318", + "404389800", + "463302301", + "259744087", + "523660949", + "812107266", + "452438775", + "886864375", + "178420302" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_522008539,536341288)", + "equals(D_518916981,104430631)", + "equals(D_479143504,203919683)", + "equals(D_479143504,807884576)", + "equals(D_479143504,165596977)", + "equals(D_479143504,578402172)", + "equals(D_479143504,184513726)", + "equals(D_479143504,390351864)", + "equals(D_406270109,950773275)", + "equals(D_406270109,762727133)", + "equals(D_406270109,877842367)", + "equals(D_406270109,886771318)", + "equals(D_406270109,404389800)", + "equals(D_406270109,463302301)", + "equals(D_406270109,259744087)", + "equals(D_406270109,523660949)", + "equals(D_899251483_V2,812107266)", + "equals(D_899251483_V2,452438775)", + "equals(D_899251483_V2,886864375)" + ], + "sitesByScope": { + "question": 27 + }, + "sitesByAttribute": { + "displayif": 27 + } + }, + "grids": [ + { + "questionId": "D_487532606", + "questionIndex": 7, + "rowQuestionIds": [ + "D_619765650", + "D_520755310", + "D_839329467" + ], + "rowCount": 3, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "104430631", + "974230748", + "936042740", + "731141335", + "591670915" + ] + } + ], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 52, + "processorQuestionCount": 50, + "processedQuestionCount": 50, + "renderedFormCount": 50, + "controlCount": 350, + "responseControlCount": 203, + "explicitTransitionCount": 25, + "sequentialAdjacencyCount": 49, + "resolvedExplicitTransitionCount": 25, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 27, + "gridQuestionCount": 1, + "gridRowCount": 3, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 19 + } + }, + { + "schemaVersion": 1, + "module": "moduleBiospecimen", + "locale": "es", + "language": "es", + "path": "prod/moduleBiospecimenSpanish.txt", + "sha256": "16f3ae9976bc65506da60281fe17e27f6701109e6a5b67d9b65e044805259192", + "questName": "D_299215535", + "version": "1.4", + "authoredMarkerCount": 53, + "runtimeQuestionIds": [ + "SRVBIO_MODULEINTRO_V1R0", + "D_522008539?", + "D_470484596?", + "D_867307558?", + "D_191057574_V2?", + "D_299417266_V2?", + "D_689861450_V2?", + "D_487532606", + "SRVBLU_REPROINTRO_V1R0", + "D_380603392!", + "D_112151599!", + "D_644459734!", + "D_518916981?", + "D_234714655?", + "D_798452445?", + "D_563539159?", + "D_875535246?", + "D_130311122?", + "SRVMTW_MODULEINTRO_V1R0", + "D_350251057?", + "D_877878167?", + "D_800703566?", + "D_294886836?", + "D_642044281?", + "D_479143504?", + "D_498984275?", + "D_205713835?", + "D_353467497?", + "D_429994023?", + "D_499977481?", + "D_406270109?", + "D_349659426?", + "D_766370065?", + "D_520416570?", + "D_921972241?", + "D_526973271?", + "D_460873842?", + "D_430060900?", + "D_800752981?", + "D_899251483_V2?", + "D_724589244?", + "D_957305523?", + "D_360678252?", + "D_542661394?", + "D_339570897?", + "D_983043203?", + "D_736028153?", + "D_792134396?", + "D_736393021?", + "D_318641324?", + "END" + ], + "responseControlsByType": { + "checkbox": 31, + "date": 1, + "radio": 168, + "time": 3 + }, + "explicitTransitions": { + "targets": [ + "D_299417266_V2", + "D_518916981", + "D_798452445", + "D_875535246", + "D_498984275", + "D_205713835", + "D_353467497", + "D_429994023", + "D_499977481", + "D_406270109", + "D_349659426", + "D_766370065", + "D_520416570", + "D_921972241", + "D_526973271", + "D_460873842", + "D_430060900", + "D_800752981", + "D_724589244", + "D_957305523", + "D_360678252", + "END" + ], + "byKind": { + "no-response": 1, + "response": 24 + }, + "byResolution": { + "exact": 22, + "terminal": 3 + }, + "triggerTypes": { + "checkbox": 17, + "hidden": 1, + "radio": 7 + }, + "triggerValues": [ + "330461666", + "104430631", + "353358909", + "203919683", + "807884576", + "165596977", + "578402172", + "184513726", + "390351864", + "950773275", + "762727133", + "877842367", + "886771318", + "404389800", + "463302301", + "259744087", + "523660949", + "812107266", + "452438775", + "886864375", + "178420302" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_522008539,536341288)", + "equals(D_518916981,104430631)", + "equals(D_479143504,203919683)", + "equals(D_479143504,807884576)", + "equals(D_479143504,165596977)", + "equals(D_479143504,578402172)", + "equals(D_479143504,184513726)", + "equals(D_479143504,390351864)", + "equals(D_406270109,950773275)", + "equals(D_406270109,762727133)", + "equals(D_406270109,877842367)", + "equals(D_406270109,886771318)", + "equals(D_406270109,404389800)", + "equals(D_406270109,463302301)", + "equals(D_406270109,259744087)", + "equals(D_406270109,523660949)", + "equals(D_899251483_V2,812107266)", + "equals(D_899251483_V2,452438775)", + "equals(D_899251483_V2,886864375)" + ], + "sitesByScope": { + "question": 27 + }, + "sitesByAttribute": { + "displayif": 27 + } + }, + "grids": [ + { + "questionId": "D_487532606", + "questionIndex": 7, + "rowQuestionIds": [ + "D_619765650", + "D_520755310", + "D_839329467" + ], + "rowCount": 3, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "104430631", + "974230748", + "936042740", + "731141335", + "591670915" + ] + } + ], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 53, + "processorQuestionCount": 51, + "processedQuestionCount": 51, + "renderedFormCount": 51, + "controlCount": 352, + "responseControlCount": 203, + "explicitTransitionCount": 25, + "sequentialAdjacencyCount": 50, + "resolvedExplicitTransitionCount": 25, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 27, + "gridQuestionCount": 1, + "gridRowCount": 3, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 19 + } + }, + { + "schemaVersion": 1, + "module": "moduleCOVID19", + "locale": "en", + "language": "en", + "path": "prod/moduleCOVID19.txt", + "sha256": "5d3dfa29799998557fd85d168869f9b1f122d3d957f443a7a423ec12304c6426", + "questName": "D_793330426", + "version": "1.3", + "authoredMarkerCount": 97, + "runtimeQuestionIds": [ + "SRVCOV_COVIDINTRO_V1R0", + "D_494226443?", + "D_860011428?", + "D_980800222_V2_1_1!", + "D_366980310_1_1?", + "D_498462481_1_1?", + "D_694503437_1_1?", + "D_451163824_1_1?", + "D_705336878_1_1?", + "D_928530823_1_1?", + "D_108733102_1_1?", + "D_389465772_1_1?", + "D_775313030_1_1?", + "D_744230001_1_1?", + "D_782396371_1_1?", + "D_930944000_1_1?", + "D_984121390_1_1?", + "D_430166879_1_1?", + "D_179406442_1_1?", + "D_803339020_1_1?", + "D_893966847_1_1?", + "D_169509213_1_1?", + "SRVCOV_COVSUMMARY_V1R0_1_1", + "D_980800222_V2_2_2!", + "D_366980310_2_2?", + "D_498462481_2_2?", + "D_694503437_2_2?", + "D_451163824_2_2?", + "D_705336878_2_2?", + "D_928530823_2_2?", + "D_108733102_2_2?", + "D_389465772_2_2?", + "D_775313030_2_2?", + "D_744230001_2_2?", + "D_782396371_2_2?", + "D_930944000_2_2?", + "D_984121390_2_2?", + "D_430166879_2_2?", + "D_179406442_2_2?", + "D_803339020_2_2?", + "D_893966847_2_2?", + "D_169509213_2_2?", + "SRVCOV_COVSUMMARY_V1R0_2_2", + "D_980800222_V2_3_3!", + "D_366980310_3_3?", + "D_498462481_3_3?", + "D_694503437_3_3?", + "D_451163824_3_3?", + "D_705336878_3_3?", + "D_928530823_3_3?", + "D_108733102_3_3?", + "D_389465772_3_3?", + "D_775313030_3_3?", + "D_744230001_3_3?", + "D_782396371_3_3?", + "D_930944000_3_3?", + "D_984121390_3_3?", + "D_430166879_3_3?", + "D_179406442_3_3?", + "D_803339020_3_3?", + "D_893966847_3_3?", + "D_169509213_3_3?", + "SRVCOV_COVSUMMARY_V1R0_3_3", + "D_980800222_V2_4_4!", + "D_366980310_4_4?", + "D_498462481_4_4?", + "D_694503437_4_4?", + "D_451163824_4_4?", + "D_705336878_4_4?", + "D_928530823_4_4?", + "D_108733102_4_4?", + "D_389465772_4_4?", + "D_775313030_4_4?", + "D_744230001_4_4?", + "D_782396371_4_4?", + "D_930944000_4_4?", + "D_984121390_4_4?", + "D_430166879_4_4?", + "D_179406442_4_4?", + "D_803339020_4_4?", + "D_893966847_4_4?", + "D_169509213_4_4?", + "SRVCOV_COVSUMMARY_V1R0_4_4", + "D_980800222_V2_5_5!", + "D_366980310_5_5?", + "D_498462481_5_5?", + "D_694503437_5_5?", + "D_451163824_5_5?", + "D_705336878_5_5?", + "D_928530823_5_5?", + "D_108733102_5_5?", + "D_389465772_5_5?", + "D_775313030_5_5?", + "D_744230001_5_5?", + "D_782396371_5_5?", + "D_930944000_5_5?", + "D_984121390_5_5?", + "D_430166879_5_5?", + "D_179406442_5_5?", + "D_803339020_5_5?", + "D_893966847_5_5?", + "D_169509213_5_5?", + "SRVCOV_COVSUMMARY_V1R0_5_5", + "D_980800222_V2_6_6!", + "D_366980310_6_6?", + "D_498462481_6_6?", + "D_694503437_6_6?", + "D_451163824_6_6?", + "D_705336878_6_6?", + "D_928530823_6_6?", + "D_108733102_6_6?", + "D_389465772_6_6?", + "D_775313030_6_6?", + "D_744230001_6_6?", + "D_782396371_6_6?", + "D_930944000_6_6?", + "D_984121390_6_6?", + "D_430166879_6_6?", + "D_179406442_6_6?", + "D_803339020_6_6?", + "D_893966847_6_6?", + "D_169509213_6_6?", + "SRVCOV_COVSUMMARY_V1R0_6_6", + "D_980800222_V2_7_7!", + "D_366980310_7_7?", + "D_498462481_7_7?", + "D_694503437_7_7?", + "D_451163824_7_7?", + "D_705336878_7_7?", + "D_928530823_7_7?", + "D_108733102_7_7?", + "D_389465772_7_7?", + "D_775313030_7_7?", + "D_744230001_7_7?", + "D_782396371_7_7?", + "D_930944000_7_7?", + "D_984121390_7_7?", + "D_430166879_7_7?", + "D_179406442_7_7?", + "D_803339020_7_7?", + "D_893966847_7_7?", + "D_169509213_7_7?", + "SRVCOV_COVSUMMARY_V1R0_7_7", + "D_980800222_V2_8_8!", + "D_366980310_8_8?", + "D_498462481_8_8?", + "D_694503437_8_8?", + "D_451163824_8_8?", + "D_705336878_8_8?", + "D_928530823_8_8?", + "D_108733102_8_8?", + "D_389465772_8_8?", + "D_775313030_8_8?", + "D_744230001_8_8?", + "D_782396371_8_8?", + "D_930944000_8_8?", + "D_984121390_8_8?", + "D_430166879_8_8?", + "D_179406442_8_8?", + "D_803339020_8_8?", + "D_893966847_8_8?", + "D_169509213_8_8?", + "SRVCOV_COVSUMMARY_V1R0_8_8", + "D_980800222_V2_9_9!", + "D_366980310_9_9?", + "D_498462481_9_9?", + "D_694503437_9_9?", + "D_451163824_9_9?", + "D_705336878_9_9?", + "D_928530823_9_9?", + "D_108733102_9_9?", + "D_389465772_9_9?", + "D_775313030_9_9?", + "D_744230001_9_9?", + "D_782396371_9_9?", + "D_930944000_9_9?", + "D_984121390_9_9?", + "D_430166879_9_9?", + "D_179406442_9_9?", + "D_803339020_9_9?", + "D_893966847_9_9?", + "D_169509213_9_9?", + "SRVCOV_COVSUMMARY_V1R0_9_9", + "D_980800222_V2_10_10!", + "D_366980310_10_10?", + "D_498462481_10_10?", + "D_694503437_10_10?", + "D_451163824_10_10?", + "D_705336878_10_10?", + "D_928530823_10_10?", + "D_108733102_10_10?", + "D_389465772_10_10?", + "D_775313030_10_10?", + "D_744230001_10_10?", + "D_782396371_10_10?", + "D_930944000_10_10?", + "D_984121390_10_10?", + "D_430166879_10_10?", + "D_179406442_10_10?", + "D_803339020_10_10?", + "D_893966847_10_10?", + "D_169509213_10_10?", + "SRVCOV_COVSUMMARY_V1R0_10_10", + "D_980800222_V2_11_11!", + "D_366980310_11_11?", + "D_498462481_11_11?", + "D_694503437_11_11?", + "D_451163824_11_11?", + "D_705336878_11_11?", + "D_928530823_11_11?", + "D_108733102_11_11?", + "D_389465772_11_11?", + "D_775313030_11_11?", + "D_744230001_11_11?", + "D_782396371_11_11?", + "D_930944000_11_11?", + "D_984121390_11_11?", + "D_430166879_11_11?", + "D_179406442_11_11?", + "D_803339020_11_11?", + "D_893966847_11_11?", + "D_169509213_11_11?", + "SRVCOV_COVSUMMARY_V1R0_11_11", + "D_980800222_V2_12_12!", + "D_366980310_12_12?", + "D_498462481_12_12?", + "D_694503437_12_12?", + "D_451163824_12_12?", + "D_705336878_12_12?", + "D_928530823_12_12?", + "D_108733102_12_12?", + "D_389465772_12_12?", + "D_775313030_12_12?", + "D_744230001_12_12?", + "D_782396371_12_12?", + "D_930944000_12_12?", + "D_984121390_12_12?", + "D_430166879_12_12?", + "D_179406442_12_12?", + "D_803339020_12_12?", + "D_893966847_12_12?", + "D_169509213_12_12?", + "SRVCOV_COVSUMMARY_V1R0_12_12", + "D_980800222_V2_13_13!", + "D_366980310_13_13?", + "D_498462481_13_13?", + "D_694503437_13_13?", + "D_451163824_13_13?", + "D_705336878_13_13?", + "D_928530823_13_13?", + "D_108733102_13_13?", + "D_389465772_13_13?", + "D_775313030_13_13?", + "D_744230001_13_13?", + "D_782396371_13_13?", + "D_930944000_13_13?", + "D_984121390_13_13?", + "D_430166879_13_13?", + "D_179406442_13_13?", + "D_803339020_13_13?", + "D_893966847_13_13?", + "D_169509213_13_13?", + "SRVCOV_COVSUMMARY_V1R0_13_13", + "D_980800222_V2_14_14!", + "D_366980310_14_14?", + "D_498462481_14_14?", + "D_694503437_14_14?", + "D_451163824_14_14?", + "D_705336878_14_14?", + "D_928530823_14_14?", + "D_108733102_14_14?", + "D_389465772_14_14?", + "D_775313030_14_14?", + "D_744230001_14_14?", + "D_782396371_14_14?", + "D_930944000_14_14?", + "D_984121390_14_14?", + "D_430166879_14_14?", + "D_179406442_14_14?", + "D_803339020_14_14?", + "D_893966847_14_14?", + "D_169509213_14_14?", + "SRVCOV_COVSUMMARY_V1R0_14_14", + "D_980800222_V2_15_15!", + "D_366980310_15_15?", + "D_498462481_15_15?", + "D_694503437_15_15?", + "D_451163824_15_15?", + "D_705336878_15_15?", + "D_928530823_15_15?", + "D_108733102_15_15?", + "D_389465772_15_15?", + "D_775313030_15_15?", + "D_744230001_15_15?", + "D_782396371_15_15?", + "D_930944000_15_15?", + "D_984121390_15_15?", + "D_430166879_15_15?", + "D_179406442_15_15?", + "D_803339020_15_15?", + "D_893966847_15_15?", + "D_169509213_15_15?", + "SRVCOV_COVSUMMARY_V1R0_15_15", + "D_980800222_V2_16_16!", + "D_366980310_16_16?", + "D_498462481_16_16?", + "D_694503437_16_16?", + "D_451163824_16_16?", + "D_705336878_16_16?", + "D_928530823_16_16?", + "D_108733102_16_16?", + "D_389465772_16_16?", + "D_775313030_16_16?", + "D_744230001_16_16?", + "D_782396371_16_16?", + "D_930944000_16_16?", + "D_984121390_16_16?", + "D_430166879_16_16?", + "D_179406442_16_16?", + "D_803339020_16_16?", + "D_893966847_16_16?", + "D_169509213_16_16?", + "SRVCOV_COVSUMMARY_V1R0_16_16", + "D_980800222_V2_17_17!", + "D_366980310_17_17?", + "D_498462481_17_17?", + "D_694503437_17_17?", + "D_451163824_17_17?", + "D_705336878_17_17?", + "D_928530823_17_17?", + "D_108733102_17_17?", + "D_389465772_17_17?", + "D_775313030_17_17?", + "D_744230001_17_17?", + "D_782396371_17_17?", + "D_930944000_17_17?", + "D_984121390_17_17?", + "D_430166879_17_17?", + "D_179406442_17_17?", + "D_803339020_17_17?", + "D_893966847_17_17?", + "D_169509213_17_17?", + "SRVCOV_COVSUMMARY_V1R0_17_17", + "D_980800222_V2_18_18!", + "D_366980310_18_18?", + "D_498462481_18_18?", + "D_694503437_18_18?", + "D_451163824_18_18?", + "D_705336878_18_18?", + "D_928530823_18_18?", + "D_108733102_18_18?", + "D_389465772_18_18?", + "D_775313030_18_18?", + "D_744230001_18_18?", + "D_782396371_18_18?", + "D_930944000_18_18?", + "D_984121390_18_18?", + "D_430166879_18_18?", + "D_179406442_18_18?", + "D_803339020_18_18?", + "D_893966847_18_18?", + "D_169509213_18_18?", + "SRVCOV_COVSUMMARY_V1R0_18_18", + "D_980800222_V2_19_19!", + "D_366980310_19_19?", + "D_498462481_19_19?", + "D_694503437_19_19?", + "D_451163824_19_19?", + "D_705336878_19_19?", + "D_928530823_19_19?", + "D_108733102_19_19?", + "D_389465772_19_19?", + "D_775313030_19_19?", + "D_744230001_19_19?", + "D_782396371_19_19?", + "D_930944000_19_19?", + "D_984121390_19_19?", + "D_430166879_19_19?", + "D_179406442_19_19?", + "D_803339020_19_19?", + "D_893966847_19_19?", + "D_169509213_19_19?", + "SRVCOV_COVSUMMARY_V1R0_19_19", + "D_980800222_V2_20_20!", + "D_366980310_20_20?", + "D_498462481_20_20?", + "D_694503437_20_20?", + "D_451163824_20_20?", + "D_705336878_20_20?", + "D_928530823_20_20?", + "D_108733102_20_20?", + "D_389465772_20_20?", + "D_775313030_20_20?", + "D_744230001_20_20?", + "D_782396371_20_20?", + "D_930944000_20_20?", + "D_984121390_20_20?", + "D_430166879_20_20?", + "D_179406442_20_20?", + "D_803339020_20_20?", + "D_893966847_20_20?", + "D_169509213_20_20?", + "SRVCOV_COVSUMMARY_V1R0_20_20", + "D_980800222_V2_21_21!", + "D_366980310_21_21?", + "D_498462481_21_21?", + "D_694503437_21_21?", + "D_451163824_21_21?", + "D_705336878_21_21?", + "D_928530823_21_21?", + "D_108733102_21_21?", + "D_389465772_21_21?", + "D_775313030_21_21?", + "D_744230001_21_21?", + "D_782396371_21_21?", + "D_930944000_21_21?", + "D_984121390_21_21?", + "D_430166879_21_21?", + "D_179406442_21_21?", + "D_803339020_21_21?", + "D_893966847_21_21?", + "D_169509213_21_21?", + "SRVCOV_COVSUMMARY_V1R0_21_21", + "D_980800222_V2_22_22!", + "D_366980310_22_22?", + "D_498462481_22_22?", + "D_694503437_22_22?", + "D_451163824_22_22?", + "D_705336878_22_22?", + "D_928530823_22_22?", + "D_108733102_22_22?", + "D_389465772_22_22?", + "D_775313030_22_22?", + "D_744230001_22_22?", + "D_782396371_22_22?", + "D_930944000_22_22?", + "D_984121390_22_22?", + "D_430166879_22_22?", + "D_179406442_22_22?", + "D_803339020_22_22?", + "D_893966847_22_22?", + "D_169509213_22_22?", + "SRVCOV_COVSUMMARY_V1R0_22_22", + "D_980800222_V2_23_23!", + "D_366980310_23_23?", + "D_498462481_23_23?", + "D_694503437_23_23?", + "D_451163824_23_23?", + "D_705336878_23_23?", + "D_928530823_23_23?", + "D_108733102_23_23?", + "D_389465772_23_23?", + "D_775313030_23_23?", + "D_744230001_23_23?", + "D_782396371_23_23?", + "D_930944000_23_23?", + "D_984121390_23_23?", + "D_430166879_23_23?", + "D_179406442_23_23?", + "D_803339020_23_23?", + "D_893966847_23_23?", + "D_169509213_23_23?", + "SRVCOV_COVSUMMARY_V1R0_23_23", + "D_980800222_V2_24_24!", + "D_366980310_24_24?", + "D_498462481_24_24?", + "D_694503437_24_24?", + "D_451163824_24_24?", + "D_705336878_24_24?", + "D_928530823_24_24?", + "D_108733102_24_24?", + "D_389465772_24_24?", + "D_775313030_24_24?", + "D_744230001_24_24?", + "D_782396371_24_24?", + "D_930944000_24_24?", + "D_984121390_24_24?", + "D_430166879_24_24?", + "D_179406442_24_24?", + "D_803339020_24_24?", + "D_893966847_24_24?", + "D_169509213_24_24?", + "SRVCOV_COVSUMMARY_V1R0_24_24", + "D_980800222_V2_25_25!", + "D_366980310_25_25?", + "D_498462481_25_25?", + "D_694503437_25_25?", + "D_451163824_25_25?", + "D_705336878_25_25?", + "D_928530823_25_25?", + "D_108733102_25_25?", + "D_389465772_25_25?", + "D_775313030_25_25?", + "D_744230001_25_25?", + "D_782396371_25_25?", + "D_930944000_25_25?", + "D_984121390_25_25?", + "D_430166879_25_25?", + "D_179406442_25_25?", + "D_803339020_25_25?", + "D_893966847_25_25?", + "D_169509213_25_25?", + "SRVCOV_COVSUMMARY_V1R0_25_25", + "END_OF_LOOP", + "COV19_SKIP", + "D_847578001", + "D_136730307", + "D_751358419", + "D_110872086?", + "D_591826144?", + "COV20_SKIP", + "D_114280729", + "COV20A17_SKIP", + "D_934384452?", + "D_273371161?", + "D_959877599?", + "COV23_SKIP", + "D_813989715", + "D_857165713", + "D_749956170", + "SRVCOV_COV25INTRO_V1R0", + "D_890156588_V2?", + "D_877074400_V2?", + "D_715581797_V2_1_1?", + "D_220055064_1_1?", + "SRVCOV_COV29_V1R0_1_1", + "D_715581797_V2_2_2?", + "D_220055064_2_2?", + "SRVCOV_COV29_V1R0_2_2", + "D_715581797_V2_3_3?", + "D_220055064_3_3?", + "SRVCOV_COV29_V1R0_3_3", + "D_715581797_V2_4_4?", + "D_220055064_4_4?", + "SRVCOV_COV29_V1R0_4_4", + "D_715581797_V2_5_5?", + "D_220055064_5_5?", + "SRVCOV_COV29_V1R0_5_5", + "D_715581797_V2_6_6?", + "D_220055064_6_6?", + "SRVCOV_COV29_V1R0_6_6", + "D_715581797_V2_7_7?", + "D_220055064_7_7?", + "SRVCOV_COV29_V1R0_7_7", + "D_715581797_V2_8_8?", + "D_220055064_8_8?", + "SRVCOV_COV29_V1R0_8_8", + "D_715581797_V2_9_9?", + "D_220055064_9_9?", + "SRVCOV_COV29_V1R0_9_9", + "D_715581797_V2_10_10?", + "D_220055064_10_10?", + "SRVCOV_COV29_V1R0_10_10", + "D_715581797_V2_11_11?", + "D_220055064_11_11?", + "SRVCOV_COV29_V1R0_11_11", + "D_715581797_V2_12_12?", + "D_220055064_12_12?", + "SRVCOV_COV29_V1R0_12_12", + "D_715581797_V2_13_13?", + "D_220055064_13_13?", + "SRVCOV_COV29_V1R0_13_13", + "D_715581797_V2_14_14?", + "D_220055064_14_14?", + "SRVCOV_COV29_V1R0_14_14", + "D_715581797_V2_15_15?", + "D_220055064_15_15?", + "SRVCOV_COV29_V1R0_15_15", + "D_715581797_V2_16_16?", + "D_220055064_16_16?", + "SRVCOV_COV29_V1R0_16_16", + "D_715581797_V2_17_17?", + "D_220055064_17_17?", + "SRVCOV_COV29_V1R0_17_17", + "D_715581797_V2_18_18?", + "D_220055064_18_18?", + "SRVCOV_COV29_V1R0_18_18", + "D_715581797_V2_19_19?", + "D_220055064_19_19?", + "SRVCOV_COV29_V1R0_19_19", + "D_715581797_V2_20_20?", + "D_220055064_20_20?", + "SRVCOV_COV29_V1R0_20_20", + "D_715581797_V2_21_21?", + "D_220055064_21_21?", + "SRVCOV_COV29_V1R0_21_21", + "D_715581797_V2_22_22?", + "D_220055064_22_22?", + "SRVCOV_COV29_V1R0_22_22", + "D_715581797_V2_23_23?", + "D_220055064_23_23?", + "SRVCOV_COV29_V1R0_23_23", + "D_715581797_V2_24_24?", + "D_220055064_24_24?", + "SRVCOV_COV29_V1R0_24_24", + "D_715581797_V2_25_25?", + "D_220055064_25_25?", + "SRVCOV_COV29_V1R0_25_25", + "END_OF_LOOP", + "END" + ], + "responseControlsByType": { + "checkbox": 475, + "month": 50, + "number": 129, + "radio": 1265, + "text": 51 + }, + "explicitTransitions": { + "targets": [ + "COV23_SKIP", + "D_694503437_1_1", + "D_498462481_1_1", + "SRVCOV_COVSUMMARY_V1R0_1_1", + "D_984121390_1_1", + "D_179406442_1_1", + "D_893966847_1_1", + "_CONTINUE1_1_1", + "D_694503437_2_2", + "D_498462481_2_2", + "SRVCOV_COVSUMMARY_V1R0_2_2", + "D_984121390_2_2", + "D_179406442_2_2", + "D_893966847_2_2", + "_CONTINUE1_2_2", + "D_694503437_3_3", + "D_498462481_3_3", + "SRVCOV_COVSUMMARY_V1R0_3_3", + "D_984121390_3_3", + "D_179406442_3_3", + "D_893966847_3_3", + "_CONTINUE1_3_3", + "D_694503437_4_4", + "D_498462481_4_4", + "SRVCOV_COVSUMMARY_V1R0_4_4", + "D_984121390_4_4", + "D_179406442_4_4", + "D_893966847_4_4", + "_CONTINUE1_4_4", + "D_694503437_5_5", + "D_498462481_5_5", + "SRVCOV_COVSUMMARY_V1R0_5_5", + "D_984121390_5_5", + "D_179406442_5_5", + "D_893966847_5_5", + "_CONTINUE1_5_5", + "D_694503437_6_6", + "D_498462481_6_6", + "SRVCOV_COVSUMMARY_V1R0_6_6", + "D_984121390_6_6", + "D_179406442_6_6", + "D_893966847_6_6", + "_CONTINUE1_6_6", + "D_694503437_7_7", + "D_498462481_7_7", + "SRVCOV_COVSUMMARY_V1R0_7_7", + "D_984121390_7_7", + "D_179406442_7_7", + "D_893966847_7_7", + "_CONTINUE1_7_7", + "D_694503437_8_8", + "D_498462481_8_8", + "SRVCOV_COVSUMMARY_V1R0_8_8", + "D_984121390_8_8", + "D_179406442_8_8", + "D_893966847_8_8", + "_CONTINUE1_8_8", + "D_694503437_9_9", + "D_498462481_9_9", + "SRVCOV_COVSUMMARY_V1R0_9_9", + "D_984121390_9_9", + "D_179406442_9_9", + "D_893966847_9_9", + "_CONTINUE1_9_9", + "D_694503437_10_10", + "D_498462481_10_10", + "SRVCOV_COVSUMMARY_V1R0_10_10", + "D_984121390_10_10", + "D_179406442_10_10", + "D_893966847_10_10", + "_CONTINUE1_10_10", + "D_694503437_11_11", + "D_498462481_11_11", + "SRVCOV_COVSUMMARY_V1R0_11_11", + "D_984121390_11_11", + "D_179406442_11_11", + "D_893966847_11_11", + "_CONTINUE1_11_11", + "D_694503437_12_12", + "D_498462481_12_12", + "SRVCOV_COVSUMMARY_V1R0_12_12", + "D_984121390_12_12", + "D_179406442_12_12", + "D_893966847_12_12", + "_CONTINUE1_12_12", + "D_694503437_13_13", + "D_498462481_13_13", + "SRVCOV_COVSUMMARY_V1R0_13_13", + "D_984121390_13_13", + "D_179406442_13_13", + "D_893966847_13_13", + "_CONTINUE1_13_13", + "D_694503437_14_14", + "D_498462481_14_14", + "SRVCOV_COVSUMMARY_V1R0_14_14", + "D_984121390_14_14", + "D_179406442_14_14", + "D_893966847_14_14", + "_CONTINUE1_14_14", + "D_694503437_15_15", + "D_498462481_15_15", + "SRVCOV_COVSUMMARY_V1R0_15_15", + "D_984121390_15_15", + "D_179406442_15_15", + "D_893966847_15_15", + "_CONTINUE1_15_15", + "D_694503437_16_16", + "D_498462481_16_16", + "SRVCOV_COVSUMMARY_V1R0_16_16", + "D_984121390_16_16", + "D_179406442_16_16", + "D_893966847_16_16", + "_CONTINUE1_16_16", + "D_694503437_17_17", + "D_498462481_17_17", + "SRVCOV_COVSUMMARY_V1R0_17_17", + "D_984121390_17_17", + "D_179406442_17_17", + "D_893966847_17_17", + "_CONTINUE1_17_17", + "D_694503437_18_18", + "D_498462481_18_18", + "SRVCOV_COVSUMMARY_V1R0_18_18", + "D_984121390_18_18", + "D_179406442_18_18", + "D_893966847_18_18", + "_CONTINUE1_18_18", + "D_694503437_19_19", + "D_498462481_19_19", + "SRVCOV_COVSUMMARY_V1R0_19_19", + "D_984121390_19_19", + "D_179406442_19_19", + "D_893966847_19_19", + "_CONTINUE1_19_19", + "D_694503437_20_20", + "D_498462481_20_20", + "SRVCOV_COVSUMMARY_V1R0_20_20", + "D_984121390_20_20", + "D_179406442_20_20", + "D_893966847_20_20", + "_CONTINUE1_20_20", + "D_694503437_21_21", + "D_498462481_21_21", + "SRVCOV_COVSUMMARY_V1R0_21_21", + "D_984121390_21_21", + "D_179406442_21_21", + "D_893966847_21_21", + "_CONTINUE1_21_21", + "D_694503437_22_22", + "D_498462481_22_22", + "SRVCOV_COVSUMMARY_V1R0_22_22", + "D_984121390_22_22", + "D_179406442_22_22", + "D_893966847_22_22", + "_CONTINUE1_22_22", + "D_694503437_23_23", + "D_498462481_23_23", + "SRVCOV_COVSUMMARY_V1R0_23_23", + "D_984121390_23_23", + "D_179406442_23_23", + "D_893966847_23_23", + "_CONTINUE1_23_23", + "D_694503437_24_24", + "D_498462481_24_24", + "SRVCOV_COVSUMMARY_V1R0_24_24", + "D_984121390_24_24", + "D_179406442_24_24", + "D_893966847_24_24", + "_CONTINUE1_24_24", + "D_694503437_25_25", + "D_498462481_25_25", + "SRVCOV_COVSUMMARY_V1R0_25_25", + "D_984121390_25_25", + "D_179406442_25_25", + "D_893966847_25_25", + "_CONTINUE1_25_25", + "COV20_SKIP", + "D_591826144", + "COV20A17_SKIP", + "SRVCOV_COV25INTRO_V1R0", + "END" + ], + "byKind": { + "default": 30, + "no-response": 153, + "response": 357 + }, + "byResolution": { + "exact": 512, + "terminal": 3, + "virtual-loop": 25 + }, + "triggerTypes": { + "hidden": 183, + "radio": 357 + }, + "triggerValues": [ + "104430631", + "178420302", + "353358909", + "317811347", + "707601969" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "greaterThanOrEqual(D_860011428,1)", + "exists('D_686508359_1_1')", + "equals(D_366980310_1_1,353358909)", + "equals(D_366980310_1_1,104430631)", + "equals(D_366980310_1_1,178420302)", + "equals(D_694503437_1_1,353358909)", + "equals(D_694503437_1_1,104430631)", + "doesNotEqual(D_694503437_1_1,104430631)", + "equals(D_775313030_1_1,353358909)", + "equals(D_775313030_1_1,104430631)", + "equals(D_775313030_1_1,178420302)", + "greaterThanOrEqual(D_860011428,2)", + "exists('D_686508359_2_2')", + "equals(D_366980310_2_2,353358909)", + "equals(D_366980310_2_2,104430631)", + "equals(D_366980310_2_2,178420302)", + "equals(D_694503437_2_2,353358909)", + "equals(D_694503437_2_2,104430631)", + "doesNotEqual(D_694503437_2_2,104430631)", + "equals(D_775313030_2_2,353358909)", + "equals(D_775313030_2_2,104430631)", + "equals(D_775313030_2_2,178420302)", + "greaterThanOrEqual(D_860011428,3)", + "exists('D_686508359_3_3')", + "equals(D_366980310_3_3,353358909)", + "equals(D_366980310_3_3,104430631)", + "equals(D_366980310_3_3,178420302)", + "equals(D_694503437_3_3,353358909)", + "equals(D_694503437_3_3,104430631)", + "doesNotEqual(D_694503437_3_3,104430631)", + "equals(D_775313030_3_3,353358909)", + "equals(D_775313030_3_3,104430631)", + "equals(D_775313030_3_3,178420302)", + "greaterThanOrEqual(D_860011428,4)", + "exists('D_686508359_4_4')", + "equals(D_366980310_4_4,353358909)", + "equals(D_366980310_4_4,104430631)", + "equals(D_366980310_4_4,178420302)", + "equals(D_694503437_4_4,353358909)", + "equals(D_694503437_4_4,104430631)", + "doesNotEqual(D_694503437_4_4,104430631)", + "equals(D_775313030_4_4,353358909)", + "equals(D_775313030_4_4,104430631)", + "equals(D_775313030_4_4,178420302)", + "greaterThanOrEqual(D_860011428,5)", + "exists('D_686508359_5_5')", + "equals(D_366980310_5_5,353358909)", + "equals(D_366980310_5_5,104430631)", + "equals(D_366980310_5_5,178420302)", + "equals(D_694503437_5_5,353358909)", + "equals(D_694503437_5_5,104430631)", + "doesNotEqual(D_694503437_5_5,104430631)", + "equals(D_775313030_5_5,353358909)", + "equals(D_775313030_5_5,104430631)", + "equals(D_775313030_5_5,178420302)", + "greaterThanOrEqual(D_860011428,6)", + "exists('D_686508359_6_6')", + "equals(D_366980310_6_6,353358909)", + "equals(D_366980310_6_6,104430631)", + "equals(D_366980310_6_6,178420302)", + "equals(D_694503437_6_6,353358909)", + "equals(D_694503437_6_6,104430631)", + "doesNotEqual(D_694503437_6_6,104430631)", + "equals(D_775313030_6_6,353358909)", + "equals(D_775313030_6_6,104430631)", + "equals(D_775313030_6_6,178420302)", + "greaterThanOrEqual(D_860011428,7)", + "exists('D_686508359_7_7')", + "equals(D_366980310_7_7,353358909)", + "equals(D_366980310_7_7,104430631)", + "equals(D_366980310_7_7,178420302)", + "equals(D_694503437_7_7,353358909)", + "equals(D_694503437_7_7,104430631)", + "doesNotEqual(D_694503437_7_7,104430631)", + "equals(D_775313030_7_7,353358909)", + "equals(D_775313030_7_7,104430631)", + "equals(D_775313030_7_7,178420302)", + "greaterThanOrEqual(D_860011428,8)", + "exists('D_686508359_8_8')", + "equals(D_366980310_8_8,353358909)", + "equals(D_366980310_8_8,104430631)", + "equals(D_366980310_8_8,178420302)", + "equals(D_694503437_8_8,353358909)", + "equals(D_694503437_8_8,104430631)", + "doesNotEqual(D_694503437_8_8,104430631)", + "equals(D_775313030_8_8,353358909)", + "equals(D_775313030_8_8,104430631)", + "equals(D_775313030_8_8,178420302)", + "greaterThanOrEqual(D_860011428,9)", + "exists('D_686508359_9_9')", + "equals(D_366980310_9_9,353358909)", + "equals(D_366980310_9_9,104430631)", + "equals(D_366980310_9_9,178420302)", + "equals(D_694503437_9_9,353358909)", + "equals(D_694503437_9_9,104430631)", + "doesNotEqual(D_694503437_9_9,104430631)", + "equals(D_775313030_9_9,353358909)", + "equals(D_775313030_9_9,104430631)", + "equals(D_775313030_9_9,178420302)", + "greaterThanOrEqual(D_860011428,10)", + "exists('D_686508359_10_10')", + "equals(D_366980310_10_10,353358909)", + "equals(D_366980310_10_10,104430631)", + "equals(D_366980310_10_10,178420302)", + "equals(D_694503437_10_10,353358909)", + "equals(D_694503437_10_10,104430631)", + "doesNotEqual(D_694503437_10_10,104430631)", + "equals(D_775313030_10_10,353358909)", + "equals(D_775313030_10_10,104430631)", + "equals(D_775313030_10_10,178420302)", + "greaterThanOrEqual(D_860011428,11)", + "exists('D_686508359_11_11')", + "equals(D_366980310_11_11,353358909)", + "equals(D_366980310_11_11,104430631)", + "equals(D_366980310_11_11,178420302)", + "equals(D_694503437_11_11,353358909)", + "equals(D_694503437_11_11,104430631)", + "doesNotEqual(D_694503437_11_11,104430631)", + "equals(D_775313030_11_11,353358909)", + "equals(D_775313030_11_11,104430631)", + "equals(D_775313030_11_11,178420302)", + "greaterThanOrEqual(D_860011428,12)", + "exists('D_686508359_12_12')", + "equals(D_366980310_12_12,353358909)", + "equals(D_366980310_12_12,104430631)", + "equals(D_366980310_12_12,178420302)", + "equals(D_694503437_12_12,353358909)", + "equals(D_694503437_12_12,104430631)", + "doesNotEqual(D_694503437_12_12,104430631)", + "equals(D_775313030_12_12,353358909)", + "equals(D_775313030_12_12,104430631)", + "equals(D_775313030_12_12,178420302)", + "greaterThanOrEqual(D_860011428,13)", + "exists('D_686508359_13_13')", + "equals(D_366980310_13_13,353358909)", + "equals(D_366980310_13_13,104430631)", + "equals(D_366980310_13_13,178420302)", + "equals(D_694503437_13_13,353358909)", + "equals(D_694503437_13_13,104430631)", + "doesNotEqual(D_694503437_13_13,104430631)", + "equals(D_775313030_13_13,353358909)", + "equals(D_775313030_13_13,104430631)", + "equals(D_775313030_13_13,178420302)", + "greaterThanOrEqual(D_860011428,14)", + "exists('D_686508359_14_14')", + "equals(D_366980310_14_14,353358909)", + "equals(D_366980310_14_14,104430631)", + "equals(D_366980310_14_14,178420302)", + "equals(D_694503437_14_14,353358909)", + "equals(D_694503437_14_14,104430631)", + "doesNotEqual(D_694503437_14_14,104430631)", + "equals(D_775313030_14_14,353358909)", + "equals(D_775313030_14_14,104430631)", + "equals(D_775313030_14_14,178420302)", + "greaterThanOrEqual(D_860011428,15)", + "exists('D_686508359_15_15')", + "equals(D_366980310_15_15,353358909)", + "equals(D_366980310_15_15,104430631)", + "equals(D_366980310_15_15,178420302)", + "equals(D_694503437_15_15,353358909)", + "equals(D_694503437_15_15,104430631)", + "doesNotEqual(D_694503437_15_15,104430631)", + "equals(D_775313030_15_15,353358909)", + "equals(D_775313030_15_15,104430631)", + "equals(D_775313030_15_15,178420302)", + "greaterThanOrEqual(D_860011428,16)", + "exists('D_686508359_16_16')", + "equals(D_366980310_16_16,353358909)", + "equals(D_366980310_16_16,104430631)", + "equals(D_366980310_16_16,178420302)", + "equals(D_694503437_16_16,353358909)", + "equals(D_694503437_16_16,104430631)", + "doesNotEqual(D_694503437_16_16,104430631)", + "equals(D_775313030_16_16,353358909)", + "equals(D_775313030_16_16,104430631)", + "equals(D_775313030_16_16,178420302)", + "greaterThanOrEqual(D_860011428,17)", + "exists('D_686508359_17_17')", + "equals(D_366980310_17_17,353358909)", + "equals(D_366980310_17_17,104430631)", + "equals(D_366980310_17_17,178420302)", + "equals(D_694503437_17_17,353358909)", + "equals(D_694503437_17_17,104430631)", + "doesNotEqual(D_694503437_17_17,104430631)", + "equals(D_775313030_17_17,353358909)", + "equals(D_775313030_17_17,104430631)", + "equals(D_775313030_17_17,178420302)", + "greaterThanOrEqual(D_860011428,18)", + "exists('D_686508359_18_18')", + "equals(D_366980310_18_18,353358909)", + "equals(D_366980310_18_18,104430631)", + "equals(D_366980310_18_18,178420302)", + "equals(D_694503437_18_18,353358909)", + "equals(D_694503437_18_18,104430631)", + "doesNotEqual(D_694503437_18_18,104430631)", + "equals(D_775313030_18_18,353358909)", + "equals(D_775313030_18_18,104430631)", + "equals(D_775313030_18_18,178420302)", + "greaterThanOrEqual(D_860011428,19)", + "exists('D_686508359_19_19')", + "equals(D_366980310_19_19,353358909)", + "equals(D_366980310_19_19,104430631)", + "equals(D_366980310_19_19,178420302)", + "equals(D_694503437_19_19,353358909)", + "equals(D_694503437_19_19,104430631)", + "doesNotEqual(D_694503437_19_19,104430631)", + "equals(D_775313030_19_19,353358909)", + "equals(D_775313030_19_19,104430631)", + "equals(D_775313030_19_19,178420302)", + "greaterThanOrEqual(D_860011428,20)", + "exists('D_686508359_20_20')", + "equals(D_366980310_20_20,353358909)", + "equals(D_366980310_20_20,104430631)", + "equals(D_366980310_20_20,178420302)", + "equals(D_694503437_20_20,353358909)", + "equals(D_694503437_20_20,104430631)", + "doesNotEqual(D_694503437_20_20,104430631)", + "equals(D_775313030_20_20,353358909)", + "equals(D_775313030_20_20,104430631)", + "equals(D_775313030_20_20,178420302)", + "greaterThanOrEqual(D_860011428,21)", + "exists('D_686508359_21_21')", + "equals(D_366980310_21_21,353358909)", + "equals(D_366980310_21_21,104430631)", + "equals(D_366980310_21_21,178420302)", + "equals(D_694503437_21_21,353358909)", + "equals(D_694503437_21_21,104430631)", + "doesNotEqual(D_694503437_21_21,104430631)", + "equals(D_775313030_21_21,353358909)", + "equals(D_775313030_21_21,104430631)", + "equals(D_775313030_21_21,178420302)", + "greaterThanOrEqual(D_860011428,22)", + "exists('D_686508359_22_22')", + "equals(D_366980310_22_22,353358909)", + "equals(D_366980310_22_22,104430631)", + "equals(D_366980310_22_22,178420302)", + "equals(D_694503437_22_22,353358909)", + "equals(D_694503437_22_22,104430631)", + "doesNotEqual(D_694503437_22_22,104430631)", + "equals(D_775313030_22_22,353358909)", + "equals(D_775313030_22_22,104430631)", + "equals(D_775313030_22_22,178420302)", + "greaterThanOrEqual(D_860011428,23)", + "exists('D_686508359_23_23')", + "equals(D_366980310_23_23,353358909)", + "equals(D_366980310_23_23,104430631)", + "equals(D_366980310_23_23,178420302)", + "equals(D_694503437_23_23,353358909)", + "equals(D_694503437_23_23,104430631)", + "doesNotEqual(D_694503437_23_23,104430631)", + "equals(D_775313030_23_23,353358909)", + "equals(D_775313030_23_23,104430631)", + "equals(D_775313030_23_23,178420302)", + "greaterThanOrEqual(D_860011428,24)", + "exists('D_686508359_24_24')", + "equals(D_366980310_24_24,353358909)", + "equals(D_366980310_24_24,104430631)", + "equals(D_366980310_24_24,178420302)", + "equals(D_694503437_24_24,353358909)", + "equals(D_694503437_24_24,104430631)", + "doesNotEqual(D_694503437_24_24,104430631)", + "equals(D_775313030_24_24,353358909)", + "equals(D_775313030_24_24,104430631)", + "equals(D_775313030_24_24,178420302)", + "greaterThanOrEqual(D_860011428,25)", + "exists('D_686508359_25_25')", + "equals(D_366980310_25_25,353358909)", + "equals(D_366980310_25_25,104430631)", + "equals(D_366980310_25_25,178420302)", + "equals(D_694503437_25_25,353358909)", + "equals(D_694503437_25_25,104430631)", + "doesNotEqual(D_694503437_25_25,104430631)", + "equals(D_775313030_25_25,353358909)", + "equals(D_775313030_25_25,104430631)", + "equals(D_775313030_25_25,178420302)", + "and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(doesNotEqual(D_694503437_1_1,353358909),doesNotEqual(D_694503437_2_2,353358909)),doesNotEqual(D_694503437_3_3,353358909)),doesNotEqual(D_694503437_4_4,353358909)),doesNotEqual(D_694503437_5_5,353358909)),doesNotEqual(D_694503437_6_6,353358909)),doesNotEqual(D_694503437_7_7,353358909)),doesNotEqual(D_694503437_8_8,353358909)),doesNotEqual(D_694503437_9_9,353358909)),doesNotEqual(D_694503437_10_10,353358909)),doesNotEqual(D_694503437_11_11,353358909)),doesNotEqual(D_694503437_12_12,353358909)),doesNotEqual(D_694503437_13_13,353358909)),doesNotEqual(D_694503437_14_14,353358909)),doesNotEqual(D_694503437_15_15,353358909)),doesNotEqual(D_694503437_16_16,353358909)),doesNotEqual(D_694503437_17_17,353358909)),doesNotEqual(D_694503437_18_18,353358909)),doesNotEqual(D_694503437_19_19,353358909)),doesNotEqual(D_694503437_20_20,353358909)),doesNotEqual(D_694503437_21_21,353358909)),doesNotEqual(D_694503437_22_22,353358909)),doesNotEqual(D_694503437_23_23,353358909)),doesNotEqual(D_694503437_24_24,353358909)),doesNotEqual(D_694503437_25_25,353358909))", + "or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(equals(D_694503437_1_1,353358909),equals(D_694503437_2_2,353358909)),equals(D_694503437_3_3,353358909)),equals(D_694503437_4_4,353358909)),equals(D_694503437_5_5,353358909)),equals(D_694503437_6_6,353358909)),equals(D_694503437_7_7,353358909)),equals(D_694503437_8_8,353358909)),equals(D_694503437_9_9,353358909)),equals(D_694503437_10_10,353358909)),equals(D_694503437_11_11,353358909)),equals(D_694503437_12_12,353358909)),equals(D_694503437_13_13,353358909)),equals(D_694503437_14_14,353358909)),equals(D_694503437_15_15,353358909)),equals(D_694503437_16_16,353358909)),equals(D_694503437_17_17,353358909)),equals(D_694503437_18_18,353358909)),equals(D_694503437_19_19,353358909)),equals(D_694503437_20_20,353358909)),equals(D_694503437_21_21,353358909)),equals(D_694503437_22_22,353358909)),equals(D_694503437_23_23,353358909)),equals(D_694503437_24_24,353358909)),equals(D_694503437_25_25,353358909))", + "displayif=valueIsOneOf(\"D_110872086\",707601969) or valueLength(\"D_637540387\")>0", + "valueIsOneOf('D_110872086',707601969) or valueLength('D_637540387')>0", + "doesNotExist('D_637540387')", + "noneSelected(\"D_488415137_0\",\"D_488415137_1\",\"D_167695804_0\",\"D_167695804_1\",\"D_730334054_0\",\"D_730334054_1\",\"D_215996690_0\",\"D_215996690_1\",\"D_462737492_0\",\"D_462737492_1\",\"D_469675296_0\",\"D_469675296_1\",\"D_962475128_0\",\"D_962475128_1\",\"D_989576239_0\",\"D_989576239_1\",\"D_338613869_0\",\"D_338613869_1\",\"D_126794793_0\",\"D_126794793_1\",\"D_218793117_0\",\"D_218793117_1\",\"D_524096053_0\",\"D_524096053_1\",\"D_814101706_0\",\"D_814101706_1\",\"D_635026188_0\",\"D_635026188_1\",\"D_238135048_0\",\"D_238135048_1\",\"D_632714520_0\",\"D_632714520_1\")", + "someSelected(\"D_488415137_0\",\"D_488415137_1\",\"D_167695804_0\",\"D_167695804_1\",\"D_730334054_0\",\"D_730334054_1\",\"D_215996690_0\",\"D_215996690_1\",\"D_462737492_0\",\"D_462737492_1\",\"D_469675296_0\",\"D_469675296_1\",\"D_962475128_0\",\"D_962475128_1\",\"D_989576239_0\",\"D_989576239_1\",\"D_338613869_0\",\"D_338613869_1\",\"D_126794793_0\",\"D_126794793_1\",\"D_218793117_0\",\"D_218793117_1\",\"D_524096053_0\",\"SRVCOV_COV19C1_V1R0_1,1\",\"D_814101706_0\",\"D_814101706_1\",\"D_635026188_0\",\"D_238135048_0\",\"D_238135048_1\",\"D_632714520_0\",\"D_632714520_1", + "someSelected(%22D_488415137_0%22%2C%22D_488415137_1%22)", + "someSelected(%22D_730334054_0%22%2C%22D_730334054_1%22)", + "someSelected(%22D_215996690_0%22%2C%22D_215996690_1%22)", + "someSelected(%22D_462737492_0%22%2C%22D_462737492_1%22)", + "someSelected(%22D_469675296_0%22%2C%22D_469675296_1%22)", + "someSelected(%22D_167695804_0%22%2C%22D_167695804_1%22)", + "someSelected(%22D_524096053_0%22%2C%22D_524096053_1%22)", + "someSelected(%22D_814101706_0%22%2C%22D_814101706_1%22)", + "someSelected(%22D_962475128_0%22%2C%22D_962475128_1%22)", + "someSelected(%22D_989576239_0%22%2C%22D_989576239_1%22)", + "someSelected(%22D_338613869_0%22%2C%22D_338613869_1%22)", + "someSelected(%22D_126794793_0%22%2C%22D_126794793_1%22)", + "someSelected(%22D_218793117_0%22%2C%22D_218793117_1%22)", + "someSelected(%22D_635026188_0%22%2C%22D_635026188_1%22)", + "someSelected(%22D_238135048_0%22%2C%22D_238135048_1%22)", + "someSelected(%22D_632714520_0%22%2C%22D_632714520_1%22)", + "doesNotEqual(D_110872086,707601969)", + "equals(D_110872086,707601969)", + "exists('D_637540387')", + "and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(doesNotEqual(D_494226443,104430631),doesNotEqual(D_494226443,178420302)),doesNotEqual(isDefined(D_494226443,-1),-1)),doesNotEqual(D_498462481_1_1,104430631)),doesNotEqual(D_694503437_1_1,104430631)),doesNotEqual(D_498462481_2_2,104430631)),doesNotEqual(D_694503437_2_2,104430631)),doesNotEqual(D_498462481_3_3,104430631)),doesNotEqual(D_694503437_3_3,104430631)),doesNotEqual(D_498462481_4_4,104430631)),doesNotEqual(D_694503437_4_4,104430631)),doesNotEqual(D_498462481_5_5,104430631)),doesNotEqual(D_694503437_5_5,104430631)),doesNotEqual(D_498462481_6_6,104430631)),doesNotEqual(D_694503437_6_6,104430631)),doesNotEqual(D_498462481_7_7,104430631)),doesNotEqual(D_694503437_7_7,104430631)),doesNotEqual(D_498462481_8_8,104430631)),doesNotEqual(D_694503437_8_8,104430631)),doesNotEqual(D_498462481_9_9,104430631)),doesNotEqual(D_694503437_9_9,104430631)),doesNotEqual(D_498462481_10_10,104430631)),doesNotEqual(D_694503437_10_10,104430631)),doesNotEqual(D_498462481_11_11,104430631)),doesNotEqual(D_694503437_11_11,104430631)),doesNotEqual(D_498462481_12_12,104430631)),doesNotEqual(D_694503437_12_12,104430631)),doesNotEqual(D_498462481_13_13,104430631)),doesNotEqual(D_694503437_13_13,104430631)),doesNotEqual(D_498462481_14_14,104430631)),doesNotEqual(D_694503437_14_14,104430631)),doesNotEqual(D_498462481_15_15,104430631)),doesNotEqual(D_694503437_15_15,104430631)),doesNotEqual(D_498462481_16_16,104430631)),doesNotEqual(D_694503437_16_16,104430631)),doesNotEqual(D_498462481_17_17,104430631)),doesNotEqual(D_694503437_17_17,104430631)),doesNotEqual(D_498462481_18_18,104430631)),doesNotEqual(D_694503437_18_18,104430631)),doesNotEqual(D_498462481_19_19,104430631)),doesNotEqual(D_694503437_19_19,104430631)),doesNotEqual(D_498462481_20_20,104430631)),doesNotEqual(D_694503437_20_20,104430631)),doesNotEqual(D_498462481_21_21,104430631)),doesNotEqual(D_694503437_21_21,104430631)),doesNotEqual(D_498462481_22_22,104430631)),doesNotEqual(D_694503437_22_22,104430631)),doesNotEqual(D_498462481_23_23,104430631)),doesNotEqual(D_694503437_23_23,104430631)),doesNotEqual(D_498462481_24_24,104430631)),doesNotEqual(D_694503437_24_24,104430631)),doesNotEqual(D_498462481_25_25,104430631)),doesNotEqual(D_694503437_25_25,104430631))", + "or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(equals(D_494226443,104430631),equals(D_494226443,178420302)),equals(isDefined(D_494226443,-1),-1)),equals(D_498462481_1_1,104430631)),equals(D_694503437_1_1,104430631)),equals(D_498462481_2_2,104430631)),equals(D_694503437_2_2,104430631)),equals(D_498462481_3_3,104430631)),equals(D_694503437_3_3,104430631)),equals(D_498462481_4_4,104430631)),equals(D_694503437_4_4,104430631)),equals(D_498462481_5_5,104430631)),equals(D_694503437_5_5,104430631)),equals(D_498462481_6_6,104430631)),equals(D_694503437_6_6,104430631)),equals(D_498462481_7_7,104430631)),equals(D_694503437_7_7,104430631)),equals(D_498462481_8_8,104430631)),equals(D_694503437_8_8,104430631)),equals(D_498462481_9_9,104430631)),equals(D_694503437_9_9,104430631)),equals(D_498462481_10_10,104430631)),equals(D_694503437_10_10,104430631)),equals(D_498462481_11_11,104430631)),equals(D_694503437_11_11,104430631)),equals(D_498462481_12_12,104430631)),equals(D_694503437_12_12,104430631)),equals(D_498462481_13_13,104430631)),equals(D_694503437_13_13,104430631)),equals(D_498462481_14_14,104430631)),equals(D_694503437_14_14,104430631)),equals(D_498462481_15_15,104430631)),equals(D_694503437_15_15,104430631)),equals(D_498462481_16_16,104430631)),equals(D_694503437_16_16,104430631)),equals(D_498462481_17_17,104430631)),equals(D_694503437_17_17,104430631)),equals(D_498462481_18_18,104430631)),equals(D_694503437_18_18,104430631)),equals(D_498462481_19_19,104430631)),equals(D_694503437_19_19,104430631)),equals(D_498462481_20_20,104430631)),equals(D_694503437_20_20,104430631)),equals(D_498462481_21_21,104430631)),equals(D_694503437_21_21,104430631)),equals(D_498462481_22_22,104430631)),equals(D_694503437_22_22,104430631)),equals(D_498462481_23_23,104430631)),equals(D_694503437_23_23,104430631)),equals(D_498462481_24_24,104430631)),equals(D_694503437_24_24,104430631)),equals(D_498462481_25_25,104430631)),equals(D_694503437_25_25,104430631))", + "someSelected(\"D_874168085_0\",\"D_874168085_1\",\"D_283112988_0\",\"D_283112988_1\",\"D_580629349_0\",\"D_580629349_1\",\"D_151327643_0\",\"D_151327643_1\",\"D_440872808_0\",\"D_440872808_1\",\"D_874223830_0\",\"D_874223830_1\",\"D_847529903_0\",\"D_847529903_1\",\"D_219358831_0\",\"D_219358831_1\",\"D_636367178_0\",\"D_636367178_1\",\"D_243443780_0\",\"D_243443780_1\",\"D_357462273_0\",\"D_357462273_1\",\"D_638380747_0\",\"D_638380747_1\",\"D_187399900_0\",\"D_187399900_1\")", + "someSelected(%22D_874168085_0%22%2C%22D_874168085_1%22)", + "someSelected(%22D_283112988_0%22%2C%22D_283112988_1%22)", + "someSelected(%22D_580629349_0%22%2C%22D_580629349_1%22)", + "someSelected(%22D_151327643_0%22%2C%22D_151327643_1%22)", + "someSelected(%22D_440872808_0%22%2C%22D_440872808_1%22)", + "someSelected(%22D_874223830_0%22%2C%22D_874223830_1%22)", + "someSelected(%22D_847529903_0%22%2C%22D_847529903_1%22)", + "someSelected(%22D_219358831_0%22%2C%22D_219358831_1%22)", + "someSelected(%22D_636367178_0%22%2C%22D_636367178_1%22)", + "someSelected(%22D_243443780_0%22%2C%22D_243443780_1%22)", + "someSelected(%22D_357462273_0%22%2C%22D_357462273_1%22)", + "someSelected(%22D_638380747_0%22%2C%22D_638380747_1%22)", + "someSelected(%22D_187399900_0%22%2C%22D_187399900_1%22)", + "greaterThanOrEqual(D_877074400_V2,1)", + "equals(D_220055064_1_1,661871565)", + "equals(D_220055064_1_1,657978450)", + "equals(D_220055064_1_1,411943417)", + "equals(D_220055064_1_1,113838601)", + "equals(D_220055064_1_1,503154121)", + "valueIsOneOf('D_220055064_1_1',807835037) or valueLength('D_395747093_1_1')>0", + "equals(D_220055064_1_1,178420302)", + "greaterThanOrEqual(D_877074400_V2,2)", + "equals(D_220055064_2_2,661871565)", + "equals(D_220055064_2_2,657978450)", + "equals(D_220055064_2_2,411943417)", + "equals(D_220055064_2_2,113838601)", + "equals(D_220055064_2_2,503154121)", + "valueIsOneOf('D_220055064_2_2',807835037) or valueLength('D_395747093_2_2')>0", + "equals(D_220055064_2_2,178420302)", + "greaterThanOrEqual(D_877074400_V2,3)", + "equals(D_220055064_3_3,661871565)", + "equals(D_220055064_3_3,657978450)", + "equals(D_220055064_3_3,411943417)", + "equals(D_220055064_3_3,113838601)", + "equals(D_220055064_3_3,503154121)", + "valueIsOneOf('D_220055064_3_3',807835037) or valueLength('D_395747093_3_3')>0", + "equals(D_220055064_3_3,178420302)", + "greaterThanOrEqual(D_877074400_V2,4)", + "equals(D_220055064_4_4,661871565)", + "equals(D_220055064_4_4,657978450)", + "equals(D_220055064_4_4,411943417)", + "equals(D_220055064_4_4,113838601)", + "equals(D_220055064_4_4,503154121)", + "valueIsOneOf('D_220055064_4_4',807835037) or valueLength('D_395747093_4_4')>0", + "equals(D_220055064_4_4,178420302)", + "greaterThanOrEqual(D_877074400_V2,5)", + "equals(D_220055064_5_5,661871565)", + "equals(D_220055064_5_5,657978450)", + "equals(D_220055064_5_5,411943417)", + "equals(D_220055064_5_5,113838601)", + "equals(D_220055064_5_5,503154121)", + "valueIsOneOf('D_220055064_5_5',807835037) or valueLength('D_395747093_5_5')>0", + "equals(D_220055064_5_5,178420302)", + "greaterThanOrEqual(D_877074400_V2,6)", + "equals(D_220055064_6_6,661871565)", + "equals(D_220055064_6_6,657978450)", + "equals(D_220055064_6_6,411943417)", + "equals(D_220055064_6_6,113838601)", + "equals(D_220055064_6_6,503154121)", + "valueIsOneOf('D_220055064_6_6',807835037) or valueLength('D_395747093_6_6')>0", + "equals(D_220055064_6_6,178420302)", + "greaterThanOrEqual(D_877074400_V2,7)", + "equals(D_220055064_7_7,661871565)", + "equals(D_220055064_7_7,657978450)", + "equals(D_220055064_7_7,411943417)", + "equals(D_220055064_7_7,113838601)", + "equals(D_220055064_7_7,503154121)", + "valueIsOneOf('D_220055064_7_7',807835037) or valueLength('D_395747093_7_7')>0", + "equals(D_220055064_7_7,178420302)", + "greaterThanOrEqual(D_877074400_V2,8)", + "equals(D_220055064_8_8,661871565)", + "equals(D_220055064_8_8,657978450)", + "equals(D_220055064_8_8,411943417)", + "equals(D_220055064_8_8,113838601)", + "equals(D_220055064_8_8,503154121)", + "valueIsOneOf('D_220055064_8_8',807835037) or valueLength('D_395747093_8_8')>0", + "equals(D_220055064_8_8,178420302)", + "greaterThanOrEqual(D_877074400_V2,9)", + "equals(D_220055064_9_9,661871565)", + "equals(D_220055064_9_9,657978450)", + "equals(D_220055064_9_9,411943417)", + "equals(D_220055064_9_9,113838601)", + "equals(D_220055064_9_9,503154121)", + "valueIsOneOf('D_220055064_9_9',807835037) or valueLength('D_395747093_9_9')>0", + "equals(D_220055064_9_9,178420302)", + "greaterThanOrEqual(D_877074400_V2,10)", + "equals(D_220055064_10_10,661871565)", + "equals(D_220055064_10_10,657978450)", + "equals(D_220055064_10_10,411943417)", + "equals(D_220055064_10_10,113838601)", + "equals(D_220055064_10_10,503154121)", + "valueIsOneOf('D_220055064_10_10',807835037) or valueLength('D_395747093_10_10')>0", + "equals(D_220055064_10_10,178420302)", + "greaterThanOrEqual(D_877074400_V2,11)", + "equals(D_220055064_11_11,661871565)", + "equals(D_220055064_11_11,657978450)", + "equals(D_220055064_11_11,411943417)", + "equals(D_220055064_11_11,113838601)", + "equals(D_220055064_11_11,503154121)", + "valueIsOneOf('D_220055064_11_11',807835037) or valueLength('D_395747093_11_11')>0", + "equals(D_220055064_11_11,178420302)", + "greaterThanOrEqual(D_877074400_V2,12)", + "equals(D_220055064_12_12,661871565)", + "equals(D_220055064_12_12,657978450)", + "equals(D_220055064_12_12,411943417)", + "equals(D_220055064_12_12,113838601)", + "equals(D_220055064_12_12,503154121)", + "valueIsOneOf('D_220055064_12_12',807835037) or valueLength('D_395747093_12_12')>0", + "equals(D_220055064_12_12,178420302)", + "greaterThanOrEqual(D_877074400_V2,13)", + "equals(D_220055064_13_13,661871565)", + "equals(D_220055064_13_13,657978450)", + "equals(D_220055064_13_13,411943417)", + "equals(D_220055064_13_13,113838601)", + "equals(D_220055064_13_13,503154121)", + "valueIsOneOf('D_220055064_13_13',807835037) or valueLength('D_395747093_13_13')>0", + "equals(D_220055064_13_13,178420302)", + "greaterThanOrEqual(D_877074400_V2,14)", + "equals(D_220055064_14_14,661871565)", + "equals(D_220055064_14_14,657978450)", + "equals(D_220055064_14_14,411943417)", + "equals(D_220055064_14_14,113838601)", + "equals(D_220055064_14_14,503154121)", + "valueIsOneOf('D_220055064_14_14',807835037) or valueLength('D_395747093_14_14')>0", + "equals(D_220055064_14_14,178420302)", + "greaterThanOrEqual(D_877074400_V2,15)", + "equals(D_220055064_15_15,661871565)", + "equals(D_220055064_15_15,657978450)", + "equals(D_220055064_15_15,411943417)", + "equals(D_220055064_15_15,113838601)", + "equals(D_220055064_15_15,503154121)", + "valueIsOneOf('D_220055064_15_15',807835037) or valueLength('D_395747093_15_15')>0", + "equals(D_220055064_15_15,178420302)", + "greaterThanOrEqual(D_877074400_V2,16)", + "equals(D_220055064_16_16,661871565)", + "equals(D_220055064_16_16,657978450)", + "equals(D_220055064_16_16,411943417)", + "equals(D_220055064_16_16,113838601)", + "equals(D_220055064_16_16,503154121)", + "valueIsOneOf('D_220055064_16_16',807835037) or valueLength('D_395747093_16_16')>0", + "equals(D_220055064_16_16,178420302)", + "greaterThanOrEqual(D_877074400_V2,17)", + "equals(D_220055064_17_17,661871565)", + "equals(D_220055064_17_17,657978450)", + "equals(D_220055064_17_17,411943417)", + "equals(D_220055064_17_17,113838601)", + "equals(D_220055064_17_17,503154121)", + "valueIsOneOf('D_220055064_17_17',807835037) or valueLength('D_395747093_17_17')>0", + "equals(D_220055064_17_17,178420302)", + "greaterThanOrEqual(D_877074400_V2,18)", + "equals(D_220055064_18_18,661871565)", + "equals(D_220055064_18_18,657978450)", + "equals(D_220055064_18_18,411943417)", + "equals(D_220055064_18_18,113838601)", + "equals(D_220055064_18_18,503154121)", + "valueIsOneOf('D_220055064_18_18',807835037) or valueLength('D_395747093_18_18')>0", + "equals(D_220055064_18_18,178420302)", + "greaterThanOrEqual(D_877074400_V2,19)", + "equals(D_220055064_19_19,661871565)", + "equals(D_220055064_19_19,657978450)", + "equals(D_220055064_19_19,411943417)", + "equals(D_220055064_19_19,113838601)", + "equals(D_220055064_19_19,503154121)", + "valueIsOneOf('D_220055064_19_19',807835037) or valueLength('D_395747093_19_19')>0", + "equals(D_220055064_19_19,178420302)", + "greaterThanOrEqual(D_877074400_V2,20)", + "equals(D_220055064_20_20,661871565)", + "equals(D_220055064_20_20,657978450)", + "equals(D_220055064_20_20,411943417)", + "equals(D_220055064_20_20,113838601)", + "equals(D_220055064_20_20,503154121)", + "valueIsOneOf('D_220055064_20_20',807835037) or valueLength('D_395747093_20_20')>0", + "equals(D_220055064_20_20,178420302)", + "greaterThanOrEqual(D_877074400_V2,21)", + "equals(D_220055064_21_21,661871565)", + "equals(D_220055064_21_21,657978450)", + "equals(D_220055064_21_21,411943417)", + "equals(D_220055064_21_21,113838601)", + "equals(D_220055064_21_21,503154121)", + "valueIsOneOf('D_220055064_21_21',807835037) or valueLength('D_395747093_21_21')>0", + "equals(D_220055064_21_21,178420302)", + "greaterThanOrEqual(D_877074400_V2,22)", + "equals(D_220055064_22_22,661871565)", + "equals(D_220055064_22_22,657978450)", + "equals(D_220055064_22_22,411943417)", + "equals(D_220055064_22_22,113838601)", + "equals(D_220055064_22_22,503154121)", + "valueIsOneOf('D_220055064_22_22',807835037) or valueLength('D_395747093_22_22')>0", + "equals(D_220055064_22_22,178420302)", + "greaterThanOrEqual(D_877074400_V2,23)", + "equals(D_220055064_23_23,661871565)", + "equals(D_220055064_23_23,657978450)", + "equals(D_220055064_23_23,411943417)", + "equals(D_220055064_23_23,113838601)", + "equals(D_220055064_23_23,503154121)", + "valueIsOneOf('D_220055064_23_23',807835037) or valueLength('D_395747093_23_23')>0", + "equals(D_220055064_23_23,178420302)", + "greaterThanOrEqual(D_877074400_V2,24)", + "equals(D_220055064_24_24,661871565)", + "equals(D_220055064_24_24,657978450)", + "equals(D_220055064_24_24,411943417)", + "equals(D_220055064_24_24,113838601)", + "equals(D_220055064_24_24,503154121)", + "valueIsOneOf('D_220055064_24_24',807835037) or valueLength('D_395747093_24_24')>0", + "equals(D_220055064_24_24,178420302)", + "greaterThanOrEqual(D_877074400_V2,25)", + "equals(D_220055064_25_25,661871565)", + "equals(D_220055064_25_25,657978450)", + "equals(D_220055064_25_25,411943417)", + "equals(D_220055064_25_25,113838601)", + "equals(D_220055064_25_25,503154121)", + "valueIsOneOf('D_220055064_25_25',807835037) or valueLength('D_395747093_25_25')>0", + "equals(D_220055064_25_25,178420302)" + ], + "sitesByScope": { + "grid-row": 29, + "inline": 479, + "question": 589 + }, + "sitesByAttribute": { + "data-displayif": 29, + "displayif": 1068 + } + }, + "grids": [ + { + "questionId": "D_847578001", + "questionIndex": 505, + "rowQuestionIds": [ + "D_488415137", + "D_167695804", + "D_730334054", + "D_215996690", + "D_462737492", + "D_469675296" + ], + "rowCount": 6, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "724612102", + "178780048", + "244354126" + ] + }, + { + "questionId": "D_136730307", + "questionIndex": 506, + "rowQuestionIds": [ + "D_962475128", + "D_989576239", + "D_338613869", + "D_126794793", + "D_218793117" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "724612102", + "178780048", + "244354126" + ] + }, + { + "questionId": "D_751358419", + "questionIndex": 507, + "rowQuestionIds": [ + "D_524096053", + "D_814101706", + "D_635026188", + "D_238135048", + "D_632714520" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "724612102", + "178780048", + "244354126" + ] + }, + { + "questionId": "D_114280729", + "questionIndex": 511, + "rowQuestionIds": [ + "D_374567479", + "D_966214244", + "D_109223043", + "D_368669706", + "D_605818246", + "D_790860504", + "D_336856410", + "D_518602598", + "D_770190369", + "D_994153376", + "D_481587023", + "D_590361055", + "D_108389123", + "D_747085418", + "D_702905707", + "D_986119909" + ], + "rowCount": 16, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "232063618", + "948148236", + "692824372" + ] + }, + { + "questionId": "D_813989715", + "questionIndex": 517, + "rowQuestionIds": [ + "D_874168085", + "D_283112988", + "D_580629349", + "D_151327643", + "D_440872808", + "D_874223830" + ], + "rowCount": 6, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "931688701", + "586272115", + "770236544" + ] + }, + { + "questionId": "D_857165713", + "questionIndex": 518, + "rowQuestionIds": [ + "D_847529903", + "D_219358831", + "D_636367178", + "D_243443780", + "D_357462273", + "D_638380747", + "D_187399900" + ], + "rowCount": 7, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "931688701", + "586272115", + "770236544" + ] + }, + { + "questionId": "D_749956170", + "questionIndex": 519, + "rowQuestionIds": [ + "D_527872064", + "D_691752394", + "D_143206081", + "D_431203595", + "D_516899143", + "D_223008071", + "D_599862694", + "D_860444009", + "D_246857412", + "D_144819886", + "D_304155106", + "D_830581863", + "D_463689026" + ], + "rowCount": 13, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "232063618", + "948148236", + "692824372" + ] + } + ], + "loops": [ + { + "loopIndex": "1", + "loopMaxQuestionIds": [ + "D_860011428" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 3, + 23, + 43, + 63, + 83, + 103, + 123, + 143, + 163, + 183, + 203, + 223, + 243, + 263, + 283, + 303, + 323, + 343, + 363, + 383, + 403, + 423, + 443, + 463, + 483 + ], + "boundaryIndex": 503 + }, + { + "loopIndex": "2", + "loopMaxQuestionIds": [ + "D_877074400_V2" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 523, + 526, + 529, + 532, + 535, + 538, + 541, + 544, + 547, + 550, + 553, + 556, + 559, + 562, + 565, + 568, + 571, + 574, + 577, + 580, + 583, + 586, + 589, + 592, + 595 + ], + "boundaryIndex": 598 + } + ], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 97, + "processorQuestionCount": 600, + "processedQuestionCount": 600, + "renderedFormCount": 600, + "controlCount": 3922, + "responseControlCount": 1970, + "explicitTransitionCount": 540, + "sequentialAdjacencyCount": 599, + "resolvedExplicitTransitionCount": 540, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1097, + "gridQuestionCount": 7, + "gridRowCount": 58, + "loopStartCount": 50, + "loopDefinitionCount": 2, + "loopExpandedQuestionCount": 575, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 517 + } + }, + { + "schemaVersion": 1, + "module": "moduleCOVID19", + "locale": "es", + "language": "es", + "path": "prod/moduleCOVID19Spanish.txt", + "sha256": "3aec9221ab9dedd091d46b6eee3de1085e49f3a7c93e98e4ee8b47da969b9c43", + "questName": "D_793330426", + "version": "1.3", + "authoredMarkerCount": 97, + "runtimeQuestionIds": [ + "SRVCOV_COVIDINTRO_V1R0", + "D_494226443?", + "D_860011428?", + "D_980800222_V2_1_1!", + "D_366980310_1_1?", + "D_498462481_1_1?", + "D_694503437_1_1?", + "D_451163824_1_1?", + "D_705336878_1_1?", + "D_928530823_1_1?", + "D_108733102_1_1?", + "D_389465772_1_1?", + "D_775313030_1_1?", + "D_744230001_1_1?", + "D_782396371_1_1?", + "D_930944000_1_1?", + "D_984121390_1_1?", + "D_430166879_1_1?", + "D_179406442_1_1?", + "D_803339020_1_1?", + "D_893966847_1_1?", + "D_169509213_1_1?", + "SRVCOV_COVSUMMARY_V1R0_1_1", + "D_980800222_V2_2_2!", + "D_366980310_2_2?", + "D_498462481_2_2?", + "D_694503437_2_2?", + "D_451163824_2_2?", + "D_705336878_2_2?", + "D_928530823_2_2?", + "D_108733102_2_2?", + "D_389465772_2_2?", + "D_775313030_2_2?", + "D_744230001_2_2?", + "D_782396371_2_2?", + "D_930944000_2_2?", + "D_984121390_2_2?", + "D_430166879_2_2?", + "D_179406442_2_2?", + "D_803339020_2_2?", + "D_893966847_2_2?", + "D_169509213_2_2?", + "SRVCOV_COVSUMMARY_V1R0_2_2", + "D_980800222_V2_3_3!", + "D_366980310_3_3?", + "D_498462481_3_3?", + "D_694503437_3_3?", + "D_451163824_3_3?", + "D_705336878_3_3?", + "D_928530823_3_3?", + "D_108733102_3_3?", + "D_389465772_3_3?", + "D_775313030_3_3?", + "D_744230001_3_3?", + "D_782396371_3_3?", + "D_930944000_3_3?", + "D_984121390_3_3?", + "D_430166879_3_3?", + "D_179406442_3_3?", + "D_803339020_3_3?", + "D_893966847_3_3?", + "D_169509213_3_3?", + "SRVCOV_COVSUMMARY_V1R0_3_3", + "D_980800222_V2_4_4!", + "D_366980310_4_4?", + "D_498462481_4_4?", + "D_694503437_4_4?", + "D_451163824_4_4?", + "D_705336878_4_4?", + "D_928530823_4_4?", + "D_108733102_4_4?", + "D_389465772_4_4?", + "D_775313030_4_4?", + "D_744230001_4_4?", + "D_782396371_4_4?", + "D_930944000_4_4?", + "D_984121390_4_4?", + "D_430166879_4_4?", + "D_179406442_4_4?", + "D_803339020_4_4?", + "D_893966847_4_4?", + "D_169509213_4_4?", + "SRVCOV_COVSUMMARY_V1R0_4_4", + "D_980800222_V2_5_5!", + "D_366980310_5_5?", + "D_498462481_5_5?", + "D_694503437_5_5?", + "D_451163824_5_5?", + "D_705336878_5_5?", + "D_928530823_5_5?", + "D_108733102_5_5?", + "D_389465772_5_5?", + "D_775313030_5_5?", + "D_744230001_5_5?", + "D_782396371_5_5?", + "D_930944000_5_5?", + "D_984121390_5_5?", + "D_430166879_5_5?", + "D_179406442_5_5?", + "D_803339020_5_5?", + "D_893966847_5_5?", + "D_169509213_5_5?", + "SRVCOV_COVSUMMARY_V1R0_5_5", + "D_980800222_V2_6_6!", + "D_366980310_6_6?", + "D_498462481_6_6?", + "D_694503437_6_6?", + "D_451163824_6_6?", + "D_705336878_6_6?", + "D_928530823_6_6?", + "D_108733102_6_6?", + "D_389465772_6_6?", + "D_775313030_6_6?", + "D_744230001_6_6?", + "D_782396371_6_6?", + "D_930944000_6_6?", + "D_984121390_6_6?", + "D_430166879_6_6?", + "D_179406442_6_6?", + "D_803339020_6_6?", + "D_893966847_6_6?", + "D_169509213_6_6?", + "SRVCOV_COVSUMMARY_V1R0_6_6", + "D_980800222_V2_7_7!", + "D_366980310_7_7?", + "D_498462481_7_7?", + "D_694503437_7_7?", + "D_451163824_7_7?", + "D_705336878_7_7?", + "D_928530823_7_7?", + "D_108733102_7_7?", + "D_389465772_7_7?", + "D_775313030_7_7?", + "D_744230001_7_7?", + "D_782396371_7_7?", + "D_930944000_7_7?", + "D_984121390_7_7?", + "D_430166879_7_7?", + "D_179406442_7_7?", + "D_803339020_7_7?", + "D_893966847_7_7?", + "D_169509213_7_7?", + "SRVCOV_COVSUMMARY_V1R0_7_7", + "D_980800222_V2_8_8!", + "D_366980310_8_8?", + "D_498462481_8_8?", + "D_694503437_8_8?", + "D_451163824_8_8?", + "D_705336878_8_8?", + "D_928530823_8_8?", + "D_108733102_8_8?", + "D_389465772_8_8?", + "D_775313030_8_8?", + "D_744230001_8_8?", + "D_782396371_8_8?", + "D_930944000_8_8?", + "D_984121390_8_8?", + "D_430166879_8_8?", + "D_179406442_8_8?", + "D_803339020_8_8?", + "D_893966847_8_8?", + "D_169509213_8_8?", + "SRVCOV_COVSUMMARY_V1R0_8_8", + "D_980800222_V2_9_9!", + "D_366980310_9_9?", + "D_498462481_9_9?", + "D_694503437_9_9?", + "D_451163824_9_9?", + "D_705336878_9_9?", + "D_928530823_9_9?", + "D_108733102_9_9?", + "D_389465772_9_9?", + "D_775313030_9_9?", + "D_744230001_9_9?", + "D_782396371_9_9?", + "D_930944000_9_9?", + "D_984121390_9_9?", + "D_430166879_9_9?", + "D_179406442_9_9?", + "D_803339020_9_9?", + "D_893966847_9_9?", + "D_169509213_9_9?", + "SRVCOV_COVSUMMARY_V1R0_9_9", + "D_980800222_V2_10_10!", + "D_366980310_10_10?", + "D_498462481_10_10?", + "D_694503437_10_10?", + "D_451163824_10_10?", + "D_705336878_10_10?", + "D_928530823_10_10?", + "D_108733102_10_10?", + "D_389465772_10_10?", + "D_775313030_10_10?", + "D_744230001_10_10?", + "D_782396371_10_10?", + "D_930944000_10_10?", + "D_984121390_10_10?", + "D_430166879_10_10?", + "D_179406442_10_10?", + "D_803339020_10_10?", + "D_893966847_10_10?", + "D_169509213_10_10?", + "SRVCOV_COVSUMMARY_V1R0_10_10", + "D_980800222_V2_11_11!", + "D_366980310_11_11?", + "D_498462481_11_11?", + "D_694503437_11_11?", + "D_451163824_11_11?", + "D_705336878_11_11?", + "D_928530823_11_11?", + "D_108733102_11_11?", + "D_389465772_11_11?", + "D_775313030_11_11?", + "D_744230001_11_11?", + "D_782396371_11_11?", + "D_930944000_11_11?", + "D_984121390_11_11?", + "D_430166879_11_11?", + "D_179406442_11_11?", + "D_803339020_11_11?", + "D_893966847_11_11?", + "D_169509213_11_11?", + "SRVCOV_COVSUMMARY_V1R0_11_11", + "D_980800222_V2_12_12!", + "D_366980310_12_12?", + "D_498462481_12_12?", + "D_694503437_12_12?", + "D_451163824_12_12?", + "D_705336878_12_12?", + "D_928530823_12_12?", + "D_108733102_12_12?", + "D_389465772_12_12?", + "D_775313030_12_12?", + "D_744230001_12_12?", + "D_782396371_12_12?", + "D_930944000_12_12?", + "D_984121390_12_12?", + "D_430166879_12_12?", + "D_179406442_12_12?", + "D_803339020_12_12?", + "D_893966847_12_12?", + "D_169509213_12_12?", + "SRVCOV_COVSUMMARY_V1R0_12_12", + "D_980800222_V2_13_13!", + "D_366980310_13_13?", + "D_498462481_13_13?", + "D_694503437_13_13?", + "D_451163824_13_13?", + "D_705336878_13_13?", + "D_928530823_13_13?", + "D_108733102_13_13?", + "D_389465772_13_13?", + "D_775313030_13_13?", + "D_744230001_13_13?", + "D_782396371_13_13?", + "D_930944000_13_13?", + "D_984121390_13_13?", + "D_430166879_13_13?", + "D_179406442_13_13?", + "D_803339020_13_13?", + "D_893966847_13_13?", + "D_169509213_13_13?", + "SRVCOV_COVSUMMARY_V1R0_13_13", + "D_980800222_V2_14_14!", + "D_366980310_14_14?", + "D_498462481_14_14?", + "D_694503437_14_14?", + "D_451163824_14_14?", + "D_705336878_14_14?", + "D_928530823_14_14?", + "D_108733102_14_14?", + "D_389465772_14_14?", + "D_775313030_14_14?", + "D_744230001_14_14?", + "D_782396371_14_14?", + "D_930944000_14_14?", + "D_984121390_14_14?", + "D_430166879_14_14?", + "D_179406442_14_14?", + "D_803339020_14_14?", + "D_893966847_14_14?", + "D_169509213_14_14?", + "SRVCOV_COVSUMMARY_V1R0_14_14", + "D_980800222_V2_15_15!", + "D_366980310_15_15?", + "D_498462481_15_15?", + "D_694503437_15_15?", + "D_451163824_15_15?", + "D_705336878_15_15?", + "D_928530823_15_15?", + "D_108733102_15_15?", + "D_389465772_15_15?", + "D_775313030_15_15?", + "D_744230001_15_15?", + "D_782396371_15_15?", + "D_930944000_15_15?", + "D_984121390_15_15?", + "D_430166879_15_15?", + "D_179406442_15_15?", + "D_803339020_15_15?", + "D_893966847_15_15?", + "D_169509213_15_15?", + "SRVCOV_COVSUMMARY_V1R0_15_15", + "D_980800222_V2_16_16!", + "D_366980310_16_16?", + "D_498462481_16_16?", + "D_694503437_16_16?", + "D_451163824_16_16?", + "D_705336878_16_16?", + "D_928530823_16_16?", + "D_108733102_16_16?", + "D_389465772_16_16?", + "D_775313030_16_16?", + "D_744230001_16_16?", + "D_782396371_16_16?", + "D_930944000_16_16?", + "D_984121390_16_16?", + "D_430166879_16_16?", + "D_179406442_16_16?", + "D_803339020_16_16?", + "D_893966847_16_16?", + "D_169509213_16_16?", + "SRVCOV_COVSUMMARY_V1R0_16_16", + "D_980800222_V2_17_17!", + "D_366980310_17_17?", + "D_498462481_17_17?", + "D_694503437_17_17?", + "D_451163824_17_17?", + "D_705336878_17_17?", + "D_928530823_17_17?", + "D_108733102_17_17?", + "D_389465772_17_17?", + "D_775313030_17_17?", + "D_744230001_17_17?", + "D_782396371_17_17?", + "D_930944000_17_17?", + "D_984121390_17_17?", + "D_430166879_17_17?", + "D_179406442_17_17?", + "D_803339020_17_17?", + "D_893966847_17_17?", + "D_169509213_17_17?", + "SRVCOV_COVSUMMARY_V1R0_17_17", + "D_980800222_V2_18_18!", + "D_366980310_18_18?", + "D_498462481_18_18?", + "D_694503437_18_18?", + "D_451163824_18_18?", + "D_705336878_18_18?", + "D_928530823_18_18?", + "D_108733102_18_18?", + "D_389465772_18_18?", + "D_775313030_18_18?", + "D_744230001_18_18?", + "D_782396371_18_18?", + "D_930944000_18_18?", + "D_984121390_18_18?", + "D_430166879_18_18?", + "D_179406442_18_18?", + "D_803339020_18_18?", + "D_893966847_18_18?", + "D_169509213_18_18?", + "SRVCOV_COVSUMMARY_V1R0_18_18", + "D_980800222_V2_19_19!", + "D_366980310_19_19?", + "D_498462481_19_19?", + "D_694503437_19_19?", + "D_451163824_19_19?", + "D_705336878_19_19?", + "D_928530823_19_19?", + "D_108733102_19_19?", + "D_389465772_19_19?", + "D_775313030_19_19?", + "D_744230001_19_19?", + "D_782396371_19_19?", + "D_930944000_19_19?", + "D_984121390_19_19?", + "D_430166879_19_19?", + "D_179406442_19_19?", + "D_803339020_19_19?", + "D_893966847_19_19?", + "D_169509213_19_19?", + "SRVCOV_COVSUMMARY_V1R0_19_19", + "D_980800222_V2_20_20!", + "D_366980310_20_20?", + "D_498462481_20_20?", + "D_694503437_20_20?", + "D_451163824_20_20?", + "D_705336878_20_20?", + "D_928530823_20_20?", + "D_108733102_20_20?", + "D_389465772_20_20?", + "D_775313030_20_20?", + "D_744230001_20_20?", + "D_782396371_20_20?", + "D_930944000_20_20?", + "D_984121390_20_20?", + "D_430166879_20_20?", + "D_179406442_20_20?", + "D_803339020_20_20?", + "D_893966847_20_20?", + "D_169509213_20_20?", + "SRVCOV_COVSUMMARY_V1R0_20_20", + "D_980800222_V2_21_21!", + "D_366980310_21_21?", + "D_498462481_21_21?", + "D_694503437_21_21?", + "D_451163824_21_21?", + "D_705336878_21_21?", + "D_928530823_21_21?", + "D_108733102_21_21?", + "D_389465772_21_21?", + "D_775313030_21_21?", + "D_744230001_21_21?", + "D_782396371_21_21?", + "D_930944000_21_21?", + "D_984121390_21_21?", + "D_430166879_21_21?", + "D_179406442_21_21?", + "D_803339020_21_21?", + "D_893966847_21_21?", + "D_169509213_21_21?", + "SRVCOV_COVSUMMARY_V1R0_21_21", + "D_980800222_V2_22_22!", + "D_366980310_22_22?", + "D_498462481_22_22?", + "D_694503437_22_22?", + "D_451163824_22_22?", + "D_705336878_22_22?", + "D_928530823_22_22?", + "D_108733102_22_22?", + "D_389465772_22_22?", + "D_775313030_22_22?", + "D_744230001_22_22?", + "D_782396371_22_22?", + "D_930944000_22_22?", + "D_984121390_22_22?", + "D_430166879_22_22?", + "D_179406442_22_22?", + "D_803339020_22_22?", + "D_893966847_22_22?", + "D_169509213_22_22?", + "SRVCOV_COVSUMMARY_V1R0_22_22", + "D_980800222_V2_23_23!", + "D_366980310_23_23?", + "D_498462481_23_23?", + "D_694503437_23_23?", + "D_451163824_23_23?", + "D_705336878_23_23?", + "D_928530823_23_23?", + "D_108733102_23_23?", + "D_389465772_23_23?", + "D_775313030_23_23?", + "D_744230001_23_23?", + "D_782396371_23_23?", + "D_930944000_23_23?", + "D_984121390_23_23?", + "D_430166879_23_23?", + "D_179406442_23_23?", + "D_803339020_23_23?", + "D_893966847_23_23?", + "D_169509213_23_23?", + "SRVCOV_COVSUMMARY_V1R0_23_23", + "D_980800222_V2_24_24!", + "D_366980310_24_24?", + "D_498462481_24_24?", + "D_694503437_24_24?", + "D_451163824_24_24?", + "D_705336878_24_24?", + "D_928530823_24_24?", + "D_108733102_24_24?", + "D_389465772_24_24?", + "D_775313030_24_24?", + "D_744230001_24_24?", + "D_782396371_24_24?", + "D_930944000_24_24?", + "D_984121390_24_24?", + "D_430166879_24_24?", + "D_179406442_24_24?", + "D_803339020_24_24?", + "D_893966847_24_24?", + "D_169509213_24_24?", + "SRVCOV_COVSUMMARY_V1R0_24_24", + "D_980800222_V2_25_25!", + "D_366980310_25_25?", + "D_498462481_25_25?", + "D_694503437_25_25?", + "D_451163824_25_25?", + "D_705336878_25_25?", + "D_928530823_25_25?", + "D_108733102_25_25?", + "D_389465772_25_25?", + "D_775313030_25_25?", + "D_744230001_25_25?", + "D_782396371_25_25?", + "D_930944000_25_25?", + "D_984121390_25_25?", + "D_430166879_25_25?", + "D_179406442_25_25?", + "D_803339020_25_25?", + "D_893966847_25_25?", + "D_169509213_25_25?", + "SRVCOV_COVSUMMARY_V1R0_25_25", + "END_OF_LOOP", + "COV19_SKIP", + "D_847578001", + "D_136730307", + "D_751358419", + "D_110872086?", + "D_591826144?", + "COV20_SKIP", + "D_114280729", + "COV20A17_SKIP", + "D_934384452?", + "D_273371161?", + "D_959877599?", + "COV23_SKIP", + "D_813989715", + "D_857165713", + "D_749956170", + "SRVCOV_COV25INTRO_V1R0", + "D_890156588_V2?", + "D_877074400_V2?", + "D_715581797_V2_1_1?", + "D_220055064_1_1?", + "SRVCOV_COV29_V1R0_1_1", + "D_715581797_V2_2_2?", + "D_220055064_2_2?", + "SRVCOV_COV29_V1R0_2_2", + "D_715581797_V2_3_3?", + "D_220055064_3_3?", + "SRVCOV_COV29_V1R0_3_3", + "D_715581797_V2_4_4?", + "D_220055064_4_4?", + "SRVCOV_COV29_V1R0_4_4", + "D_715581797_V2_5_5?", + "D_220055064_5_5?", + "SRVCOV_COV29_V1R0_5_5", + "D_715581797_V2_6_6?", + "D_220055064_6_6?", + "SRVCOV_COV29_V1R0_6_6", + "D_715581797_V2_7_7?", + "D_220055064_7_7?", + "SRVCOV_COV29_V1R0_7_7", + "D_715581797_V2_8_8?", + "D_220055064_8_8?", + "SRVCOV_COV29_V1R0_8_8", + "D_715581797_V2_9_9?", + "D_220055064_9_9?", + "SRVCOV_COV29_V1R0_9_9", + "D_715581797_V2_10_10?", + "D_220055064_10_10?", + "SRVCOV_COV29_V1R0_10_10", + "D_715581797_V2_11_11?", + "D_220055064_11_11?", + "SRVCOV_COV29_V1R0_11_11", + "D_715581797_V2_12_12?", + "D_220055064_12_12?", + "SRVCOV_COV29_V1R0_12_12", + "D_715581797_V2_13_13?", + "D_220055064_13_13?", + "SRVCOV_COV29_V1R0_13_13", + "D_715581797_V2_14_14?", + "D_220055064_14_14?", + "SRVCOV_COV29_V1R0_14_14", + "D_715581797_V2_15_15?", + "D_220055064_15_15?", + "SRVCOV_COV29_V1R0_15_15", + "D_715581797_V2_16_16?", + "D_220055064_16_16?", + "SRVCOV_COV29_V1R0_16_16", + "D_715581797_V2_17_17?", + "D_220055064_17_17?", + "SRVCOV_COV29_V1R0_17_17", + "D_715581797_V2_18_18?", + "D_220055064_18_18?", + "SRVCOV_COV29_V1R0_18_18", + "D_715581797_V2_19_19?", + "D_220055064_19_19?", + "SRVCOV_COV29_V1R0_19_19", + "D_715581797_V2_20_20?", + "D_220055064_20_20?", + "SRVCOV_COV29_V1R0_20_20", + "D_715581797_V2_21_21?", + "D_220055064_21_21?", + "SRVCOV_COV29_V1R0_21_21", + "D_715581797_V2_22_22?", + "D_220055064_22_22?", + "SRVCOV_COV29_V1R0_22_22", + "D_715581797_V2_23_23?", + "D_220055064_23_23?", + "SRVCOV_COV29_V1R0_23_23", + "D_715581797_V2_24_24?", + "D_220055064_24_24?", + "SRVCOV_COV29_V1R0_24_24", + "D_715581797_V2_25_25?", + "D_220055064_25_25?", + "SRVCOV_COV29_V1R0_25_25", + "END_OF_LOOP", + "END" + ], + "responseControlsByType": { + "checkbox": 475, + "month": 50, + "number": 129, + "radio": 1265, + "text": 51 + }, + "explicitTransitions": { + "targets": [ + "COV23_SKIP", + "D_694503437_1_1", + "D_498462481_1_1", + "SRVCOV_COVSUMMARY_V1R0_1_1", + "D_984121390_1_1", + "D_179406442_1_1", + "D_893966847_1_1", + "_CONTINUE1_1_1", + "D_694503437_2_2", + "D_498462481_2_2", + "SRVCOV_COVSUMMARY_V1R0_2_2", + "D_984121390_2_2", + "D_179406442_2_2", + "D_893966847_2_2", + "_CONTINUE1_2_2", + "D_694503437_3_3", + "D_498462481_3_3", + "SRVCOV_COVSUMMARY_V1R0_3_3", + "D_984121390_3_3", + "D_179406442_3_3", + "D_893966847_3_3", + "_CONTINUE1_3_3", + "D_694503437_4_4", + "D_498462481_4_4", + "SRVCOV_COVSUMMARY_V1R0_4_4", + "D_984121390_4_4", + "D_179406442_4_4", + "D_893966847_4_4", + "_CONTINUE1_4_4", + "D_694503437_5_5", + "D_498462481_5_5", + "SRVCOV_COVSUMMARY_V1R0_5_5", + "D_984121390_5_5", + "D_179406442_5_5", + "D_893966847_5_5", + "_CONTINUE1_5_5", + "D_694503437_6_6", + "D_498462481_6_6", + "SRVCOV_COVSUMMARY_V1R0_6_6", + "D_984121390_6_6", + "D_179406442_6_6", + "D_893966847_6_6", + "_CONTINUE1_6_6", + "D_694503437_7_7", + "D_498462481_7_7", + "SRVCOV_COVSUMMARY_V1R0_7_7", + "D_984121390_7_7", + "D_179406442_7_7", + "D_893966847_7_7", + "_CONTINUE1_7_7", + "D_694503437_8_8", + "D_498462481_8_8", + "SRVCOV_COVSUMMARY_V1R0_8_8", + "D_984121390_8_8", + "D_179406442_8_8", + "D_893966847_8_8", + "_CONTINUE1_8_8", + "D_694503437_9_9", + "D_498462481_9_9", + "SRVCOV_COVSUMMARY_V1R0_9_9", + "D_984121390_9_9", + "D_179406442_9_9", + "D_893966847_9_9", + "_CONTINUE1_9_9", + "D_694503437_10_10", + "D_498462481_10_10", + "SRVCOV_COVSUMMARY_V1R0_10_10", + "D_984121390_10_10", + "D_179406442_10_10", + "D_893966847_10_10", + "_CONTINUE1_10_10", + "D_694503437_11_11", + "D_498462481_11_11", + "SRVCOV_COVSUMMARY_V1R0_11_11", + "D_984121390_11_11", + "D_179406442_11_11", + "D_893966847_11_11", + "_CONTINUE1_11_11", + "D_694503437_12_12", + "D_498462481_12_12", + "SRVCOV_COVSUMMARY_V1R0_12_12", + "D_984121390_12_12", + "D_179406442_12_12", + "D_893966847_12_12", + "_CONTINUE1_12_12", + "D_694503437_13_13", + "D_498462481_13_13", + "SRVCOV_COVSUMMARY_V1R0_13_13", + "D_984121390_13_13", + "D_179406442_13_13", + "D_893966847_13_13", + "_CONTINUE1_13_13", + "D_694503437_14_14", + "D_498462481_14_14", + "SRVCOV_COVSUMMARY_V1R0_14_14", + "D_984121390_14_14", + "D_179406442_14_14", + "D_893966847_14_14", + "_CONTINUE1_14_14", + "D_694503437_15_15", + "D_498462481_15_15", + "SRVCOV_COVSUMMARY_V1R0_15_15", + "D_984121390_15_15", + "D_179406442_15_15", + "D_893966847_15_15", + "_CONTINUE1_15_15", + "D_694503437_16_16", + "D_498462481_16_16", + "SRVCOV_COVSUMMARY_V1R0_16_16", + "D_984121390_16_16", + "D_179406442_16_16", + "D_893966847_16_16", + "_CONTINUE1_16_16", + "D_694503437_17_17", + "D_498462481_17_17", + "SRVCOV_COVSUMMARY_V1R0_17_17", + "D_984121390_17_17", + "D_179406442_17_17", + "D_893966847_17_17", + "_CONTINUE1_17_17", + "D_694503437_18_18", + "D_498462481_18_18", + "SRVCOV_COVSUMMARY_V1R0_18_18", + "D_984121390_18_18", + "D_179406442_18_18", + "D_893966847_18_18", + "_CONTINUE1_18_18", + "D_694503437_19_19", + "D_498462481_19_19", + "SRVCOV_COVSUMMARY_V1R0_19_19", + "D_984121390_19_19", + "D_179406442_19_19", + "D_893966847_19_19", + "_CONTINUE1_19_19", + "D_694503437_20_20", + "D_498462481_20_20", + "SRVCOV_COVSUMMARY_V1R0_20_20", + "D_984121390_20_20", + "D_179406442_20_20", + "D_893966847_20_20", + "_CONTINUE1_20_20", + "D_694503437_21_21", + "D_498462481_21_21", + "SRVCOV_COVSUMMARY_V1R0_21_21", + "D_984121390_21_21", + "D_179406442_21_21", + "D_893966847_21_21", + "_CONTINUE1_21_21", + "D_694503437_22_22", + "D_498462481_22_22", + "SRVCOV_COVSUMMARY_V1R0_22_22", + "D_984121390_22_22", + "D_179406442_22_22", + "D_893966847_22_22", + "_CONTINUE1_22_22", + "D_694503437_23_23", + "D_498462481_23_23", + "SRVCOV_COVSUMMARY_V1R0_23_23", + "D_984121390_23_23", + "D_179406442_23_23", + "D_893966847_23_23", + "_CONTINUE1_23_23", + "D_694503437_24_24", + "D_498462481_24_24", + "SRVCOV_COVSUMMARY_V1R0_24_24", + "D_984121390_24_24", + "D_179406442_24_24", + "D_893966847_24_24", + "_CONTINUE1_24_24", + "D_694503437_25_25", + "D_498462481_25_25", + "SRVCOV_COVSUMMARY_V1R0_25_25", + "D_984121390_25_25", + "D_179406442_25_25", + "D_893966847_25_25", + "_CONTINUE1_25_25", + "COV20_SKIP", + "D_591826144", + "COV20A17_SKIP", + "SRVCOV_COV25INTRO_V1R0", + "END" + ], + "byKind": { + "default": 30, + "no-response": 153, + "response": 357 + }, + "byResolution": { + "exact": 512, + "terminal": 3, + "virtual-loop": 25 + }, + "triggerTypes": { + "hidden": 183, + "radio": 357 + }, + "triggerValues": [ + "104430631", + "178420302", + "353358909", + "317811347", + "707601969" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "greaterThanOrEqual(D_860011428,1)", + "exists('D_686508359_1_1')", + "equals(D_366980310_1_1,353358909)", + "equals(D_366980310_1_1,104430631)", + "equals(D_366980310_1_1,178420302)", + "equals(D_694503437_1_1,353358909)", + "equals(D_694503437_1_1,104430631)", + "doesNotEqual(D_694503437_1_1,104430631)", + "equals(D_775313030_1_1,353358909)", + "equals(D_775313030_1_1,104430631)", + "equals(D_775313030_1_1,178420302)", + "greaterThanOrEqual(D_860011428,2)", + "exists('D_686508359_2_2')", + "equals(D_366980310_2_2,353358909)", + "equals(D_366980310_2_2,104430631)", + "equals(D_366980310_2_2,178420302)", + "equals(D_694503437_2_2,353358909)", + "equals(D_694503437_2_2,104430631)", + "doesNotEqual(D_694503437_2_2,104430631)", + "equals(D_775313030_2_2,353358909)", + "equals(D_775313030_2_2,104430631)", + "equals(D_775313030_2_2,178420302)", + "greaterThanOrEqual(D_860011428,3)", + "exists('D_686508359_3_3')", + "equals(D_366980310_3_3,353358909)", + "equals(D_366980310_3_3,104430631)", + "equals(D_366980310_3_3,178420302)", + "equals(D_694503437_3_3,353358909)", + "equals(D_694503437_3_3,104430631)", + "doesNotEqual(D_694503437_3_3,104430631)", + "equals(D_775313030_3_3,353358909)", + "equals(D_775313030_3_3,104430631)", + "equals(D_775313030_3_3,178420302)", + "greaterThanOrEqual(D_860011428,4)", + "exists('D_686508359_4_4')", + "equals(D_366980310_4_4,353358909)", + "equals(D_366980310_4_4,104430631)", + "equals(D_366980310_4_4,178420302)", + "equals(D_694503437_4_4,353358909)", + "equals(D_694503437_4_4,104430631)", + "doesNotEqual(D_694503437_4_4,104430631)", + "equals(D_775313030_4_4,353358909)", + "equals(D_775313030_4_4,104430631)", + "equals(D_775313030_4_4,178420302)", + "greaterThanOrEqual(D_860011428,5)", + "exists('D_686508359_5_5')", + "equals(D_366980310_5_5,353358909)", + "equals(D_366980310_5_5,104430631)", + "equals(D_366980310_5_5,178420302)", + "equals(D_694503437_5_5,353358909)", + "equals(D_694503437_5_5,104430631)", + "doesNotEqual(D_694503437_5_5,104430631)", + "equals(D_775313030_5_5,353358909)", + "equals(D_775313030_5_5,104430631)", + "equals(D_775313030_5_5,178420302)", + "greaterThanOrEqual(D_860011428,6)", + "exists('D_686508359_6_6')", + "equals(D_366980310_6_6,353358909)", + "equals(D_366980310_6_6,104430631)", + "equals(D_366980310_6_6,178420302)", + "equals(D_694503437_6_6,353358909)", + "equals(D_694503437_6_6,104430631)", + "doesNotEqual(D_694503437_6_6,104430631)", + "equals(D_775313030_6_6,353358909)", + "equals(D_775313030_6_6,104430631)", + "equals(D_775313030_6_6,178420302)", + "greaterThanOrEqual(D_860011428,7)", + "exists('D_686508359_7_7')", + "equals(D_366980310_7_7,353358909)", + "equals(D_366980310_7_7,104430631)", + "equals(D_366980310_7_7,178420302)", + "equals(D_694503437_7_7,353358909)", + "equals(D_694503437_7_7,104430631)", + "doesNotEqual(D_694503437_7_7,104430631)", + "equals(D_775313030_7_7,353358909)", + "equals(D_775313030_7_7,104430631)", + "equals(D_775313030_7_7,178420302)", + "greaterThanOrEqual(D_860011428,8)", + "exists('D_686508359_8_8')", + "equals(D_366980310_8_8,353358909)", + "equals(D_366980310_8_8,104430631)", + "equals(D_366980310_8_8,178420302)", + "equals(D_694503437_8_8,353358909)", + "equals(D_694503437_8_8,104430631)", + "doesNotEqual(D_694503437_8_8,104430631)", + "equals(D_775313030_8_8,353358909)", + "equals(D_775313030_8_8,104430631)", + "equals(D_775313030_8_8,178420302)", + "greaterThanOrEqual(D_860011428,9)", + "exists('D_686508359_9_9')", + "equals(D_366980310_9_9,353358909)", + "equals(D_366980310_9_9,104430631)", + "equals(D_366980310_9_9,178420302)", + "equals(D_694503437_9_9,353358909)", + "equals(D_694503437_9_9,104430631)", + "doesNotEqual(D_694503437_9_9,104430631)", + "equals(D_775313030_9_9,353358909)", + "equals(D_775313030_9_9,104430631)", + "equals(D_775313030_9_9,178420302)", + "greaterThanOrEqual(D_860011428,10)", + "exists('D_686508359_10_10')", + "equals(D_366980310_10_10,353358909)", + "equals(D_366980310_10_10,104430631)", + "equals(D_366980310_10_10,178420302)", + "equals(D_694503437_10_10,353358909)", + "equals(D_694503437_10_10,104430631)", + "doesNotEqual(D_694503437_10_10,104430631)", + "equals(D_775313030_10_10,353358909)", + "equals(D_775313030_10_10,104430631)", + "equals(D_775313030_10_10,178420302)", + "greaterThanOrEqual(D_860011428,11)", + "exists('D_686508359_11_11')", + "equals(D_366980310_11_11,353358909)", + "equals(D_366980310_11_11,104430631)", + "equals(D_366980310_11_11,178420302)", + "equals(D_694503437_11_11,353358909)", + "equals(D_694503437_11_11,104430631)", + "doesNotEqual(D_694503437_11_11,104430631)", + "equals(D_775313030_11_11,353358909)", + "equals(D_775313030_11_11,104430631)", + "equals(D_775313030_11_11,178420302)", + "greaterThanOrEqual(D_860011428,12)", + "exists('D_686508359_12_12')", + "equals(D_366980310_12_12,353358909)", + "equals(D_366980310_12_12,104430631)", + "equals(D_366980310_12_12,178420302)", + "equals(D_694503437_12_12,353358909)", + "equals(D_694503437_12_12,104430631)", + "doesNotEqual(D_694503437_12_12,104430631)", + "equals(D_775313030_12_12,353358909)", + "equals(D_775313030_12_12,104430631)", + "equals(D_775313030_12_12,178420302)", + "greaterThanOrEqual(D_860011428,13)", + "exists('D_686508359_13_13')", + "equals(D_366980310_13_13,353358909)", + "equals(D_366980310_13_13,104430631)", + "equals(D_366980310_13_13,178420302)", + "equals(D_694503437_13_13,353358909)", + "equals(D_694503437_13_13,104430631)", + "doesNotEqual(D_694503437_13_13,104430631)", + "equals(D_775313030_13_13,353358909)", + "equals(D_775313030_13_13,104430631)", + "equals(D_775313030_13_13,178420302)", + "greaterThanOrEqual(D_860011428,14)", + "exists('D_686508359_14_14')", + "equals(D_366980310_14_14,353358909)", + "equals(D_366980310_14_14,104430631)", + "equals(D_366980310_14_14,178420302)", + "equals(D_694503437_14_14,353358909)", + "equals(D_694503437_14_14,104430631)", + "doesNotEqual(D_694503437_14_14,104430631)", + "equals(D_775313030_14_14,353358909)", + "equals(D_775313030_14_14,104430631)", + "equals(D_775313030_14_14,178420302)", + "greaterThanOrEqual(D_860011428,15)", + "exists('D_686508359_15_15')", + "equals(D_366980310_15_15,353358909)", + "equals(D_366980310_15_15,104430631)", + "equals(D_366980310_15_15,178420302)", + "equals(D_694503437_15_15,353358909)", + "equals(D_694503437_15_15,104430631)", + "doesNotEqual(D_694503437_15_15,104430631)", + "equals(D_775313030_15_15,353358909)", + "equals(D_775313030_15_15,104430631)", + "equals(D_775313030_15_15,178420302)", + "greaterThanOrEqual(D_860011428,16)", + "exists('D_686508359_16_16')", + "equals(D_366980310_16_16,353358909)", + "equals(D_366980310_16_16,104430631)", + "equals(D_366980310_16_16,178420302)", + "equals(D_694503437_16_16,353358909)", + "equals(D_694503437_16_16,104430631)", + "doesNotEqual(D_694503437_16_16,104430631)", + "equals(D_775313030_16_16,353358909)", + "equals(D_775313030_16_16,104430631)", + "equals(D_775313030_16_16,178420302)", + "greaterThanOrEqual(D_860011428,17)", + "exists('D_686508359_17_17')", + "equals(D_366980310_17_17,353358909)", + "equals(D_366980310_17_17,104430631)", + "equals(D_366980310_17_17,178420302)", + "equals(D_694503437_17_17,353358909)", + "equals(D_694503437_17_17,104430631)", + "doesNotEqual(D_694503437_17_17,104430631)", + "equals(D_775313030_17_17,353358909)", + "equals(D_775313030_17_17,104430631)", + "equals(D_775313030_17_17,178420302)", + "greaterThanOrEqual(D_860011428,18)", + "exists('D_686508359_18_18')", + "equals(D_366980310_18_18,353358909)", + "equals(D_366980310_18_18,104430631)", + "equals(D_366980310_18_18,178420302)", + "equals(D_694503437_18_18,353358909)", + "equals(D_694503437_18_18,104430631)", + "doesNotEqual(D_694503437_18_18,104430631)", + "equals(D_775313030_18_18,353358909)", + "equals(D_775313030_18_18,104430631)", + "equals(D_775313030_18_18,178420302)", + "greaterThanOrEqual(D_860011428,19)", + "exists('D_686508359_19_19')", + "equals(D_366980310_19_19,353358909)", + "equals(D_366980310_19_19,104430631)", + "equals(D_366980310_19_19,178420302)", + "equals(D_694503437_19_19,353358909)", + "equals(D_694503437_19_19,104430631)", + "doesNotEqual(D_694503437_19_19,104430631)", + "equals(D_775313030_19_19,353358909)", + "equals(D_775313030_19_19,104430631)", + "equals(D_775313030_19_19,178420302)", + "greaterThanOrEqual(D_860011428,20)", + "exists('D_686508359_20_20')", + "equals(D_366980310_20_20,353358909)", + "equals(D_366980310_20_20,104430631)", + "equals(D_366980310_20_20,178420302)", + "equals(D_694503437_20_20,353358909)", + "equals(D_694503437_20_20,104430631)", + "doesNotEqual(D_694503437_20_20,104430631)", + "equals(D_775313030_20_20,353358909)", + "equals(D_775313030_20_20,104430631)", + "equals(D_775313030_20_20,178420302)", + "greaterThanOrEqual(D_860011428,21)", + "exists('D_686508359_21_21')", + "equals(D_366980310_21_21,353358909)", + "equals(D_366980310_21_21,104430631)", + "equals(D_366980310_21_21,178420302)", + "equals(D_694503437_21_21,353358909)", + "equals(D_694503437_21_21,104430631)", + "doesNotEqual(D_694503437_21_21,104430631)", + "equals(D_775313030_21_21,353358909)", + "equals(D_775313030_21_21,104430631)", + "equals(D_775313030_21_21,178420302)", + "greaterThanOrEqual(D_860011428,22)", + "exists('D_686508359_22_22')", + "equals(D_366980310_22_22,353358909)", + "equals(D_366980310_22_22,104430631)", + "equals(D_366980310_22_22,178420302)", + "equals(D_694503437_22_22,353358909)", + "equals(D_694503437_22_22,104430631)", + "doesNotEqual(D_694503437_22_22,104430631)", + "equals(D_775313030_22_22,353358909)", + "equals(D_775313030_22_22,104430631)", + "equals(D_775313030_22_22,178420302)", + "greaterThanOrEqual(D_860011428,23)", + "exists('D_686508359_23_23')", + "equals(D_366980310_23_23,353358909)", + "equals(D_366980310_23_23,104430631)", + "equals(D_366980310_23_23,178420302)", + "equals(D_694503437_23_23,353358909)", + "equals(D_694503437_23_23,104430631)", + "doesNotEqual(D_694503437_23_23,104430631)", + "equals(D_775313030_23_23,353358909)", + "equals(D_775313030_23_23,104430631)", + "equals(D_775313030_23_23,178420302)", + "greaterThanOrEqual(D_860011428,24)", + "exists('D_686508359_24_24')", + "equals(D_366980310_24_24,353358909)", + "equals(D_366980310_24_24,104430631)", + "equals(D_366980310_24_24,178420302)", + "equals(D_694503437_24_24,353358909)", + "equals(D_694503437_24_24,104430631)", + "doesNotEqual(D_694503437_24_24,104430631)", + "equals(D_775313030_24_24,353358909)", + "equals(D_775313030_24_24,104430631)", + "equals(D_775313030_24_24,178420302)", + "greaterThanOrEqual(D_860011428,25)", + "exists('D_686508359_25_25')", + "equals(D_366980310_25_25,353358909)", + "equals(D_366980310_25_25,104430631)", + "equals(D_366980310_25_25,178420302)", + "equals(D_694503437_25_25,353358909)", + "equals(D_694503437_25_25,104430631)", + "doesNotEqual(D_694503437_25_25,104430631)", + "equals(D_775313030_25_25,353358909)", + "equals(D_775313030_25_25,104430631)", + "equals(D_775313030_25_25,178420302)", + "and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(doesNotEqual(D_694503437_1_1,353358909),doesNotEqual(D_694503437_2_2,353358909)),doesNotEqual(D_694503437_3_3,353358909)),doesNotEqual(D_694503437_4_4,353358909)),doesNotEqual(D_694503437_5_5,353358909)),doesNotEqual(D_694503437_6_6,353358909)),doesNotEqual(D_694503437_7_7,353358909)),doesNotEqual(D_694503437_8_8,353358909)),doesNotEqual(D_694503437_9_9,353358909)),doesNotEqual(D_694503437_10_10,353358909)),doesNotEqual(D_694503437_11_11,353358909)),doesNotEqual(D_694503437_12_12,353358909)),doesNotEqual(D_694503437_13_13,353358909)),doesNotEqual(D_694503437_14_14,353358909)),doesNotEqual(D_694503437_15_15,353358909)),doesNotEqual(D_694503437_16_16,353358909)),doesNotEqual(D_694503437_17_17,353358909)),doesNotEqual(D_694503437_18_18,353358909)),doesNotEqual(D_694503437_19_19,353358909)),doesNotEqual(D_694503437_20_20,353358909)),doesNotEqual(D_694503437_21_21,353358909)),doesNotEqual(D_694503437_22_22,353358909)),doesNotEqual(D_694503437_23_23,353358909)),doesNotEqual(D_694503437_24_24,353358909)),doesNotEqual(D_694503437_25_25,353358909))", + "or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(equals(D_694503437_1_1,353358909),equals(D_694503437_2_2,353358909)),equals(D_694503437_3_3,353358909)),equals(D_694503437_4_4,353358909)),equals(D_694503437_5_5,353358909)),equals(D_694503437_6_6,353358909)),equals(D_694503437_7_7,353358909)),equals(D_694503437_8_8,353358909)),equals(D_694503437_9_9,353358909)),equals(D_694503437_10_10,353358909)),equals(D_694503437_11_11,353358909)),equals(D_694503437_12_12,353358909)),equals(D_694503437_13_13,353358909)),equals(D_694503437_14_14,353358909)),equals(D_694503437_15_15,353358909)),equals(D_694503437_16_16,353358909)),equals(D_694503437_17_17,353358909)),equals(D_694503437_18_18,353358909)),equals(D_694503437_19_19,353358909)),equals(D_694503437_20_20,353358909)),equals(D_694503437_21_21,353358909)),equals(D_694503437_22_22,353358909)),equals(D_694503437_23_23,353358909)),equals(D_694503437_24_24,353358909)),equals(D_694503437_25_25,353358909))", + "displayif=valueIsOneOf(\"D_110872086\",707601969) or valueLength(\"D_637540387\")>0", + "valueIsOneOf('D_110872086',707601969) or valueLength('D_637540387')>0", + "doesNotExist('D_637540387')", + "noneSelected(\"D_488415137_0\",\"D_488415137_1\",\"D_167695804_0\",\"D_167695804_1\",\"D_730334054_0\",\"D_730334054_1\",\"D_215996690_0\",\"D_215996690_1\",\"D_462737492_0\",\"D_462737492_1\",\"D_469675296_0\",\"D_469675296_1\",\"D_962475128_0\",\"D_962475128_1\",\"D_989576239_0\",\"D_989576239_1\",\"D_338613869_0\",\"D_338613869_1\",\"D_126794793_0\",\"D_126794793_1\",\"D_218793117_0\",\"D_218793117_1\",\"D_524096053_0\",\"D_524096053_1\",\"D_814101706_0\",\"D_814101706_1\",\"D_635026188_0\",\"D_635026188_1\",\"D_238135048_0\",\"D_238135048_1\",\"D_632714520_0\",\"D_632714520_1\")", + "someSelected(\"D_488415137_0\",\"D_488415137_1\",\"D_167695804_0\",\"D_167695804_1\",\"D_730334054_0\",\"D_730334054_1\",\"D_215996690_0\",\"D_215996690_1\",\"D_462737492_0\",\"D_462737492_1\",\"D_469675296_0\",\"D_469675296_1\",\"D_962475128_0\",\"D_962475128_1\",\"D_989576239_0\",\"D_989576239_1\",\"D_338613869_0\",\"D_338613869_1\",\"D_126794793_0\",\"D_126794793_1\",\"D_218793117_0\",\"D_218793117_1\",\"D_524096053_0\",\"SRVCOV_COV19C1_V1R0_1,1\",\"D_814101706_0\",\"D_814101706_1\",\"D_635026188_0\",\"D_238135048_0\",\"D_238135048_1\",\"D_632714520_0\",\"D_632714520_1", + "someSelected(%22D_488415137_0%22%2C%22D_488415137_1%22)", + "someSelected(%22D_730334054_0%22%2C%22D_730334054_1%22)", + "someSelected(%22D_215996690_0%22%2C%22D_215996690_1%22)", + "someSelected(%22D_462737492_0%22%2C%22D_462737492_1%22)", + "someSelected(%22D_469675296_0%22%2C%22D_469675296_1%22)", + "someSelected(%22D_167695804_0%22%2C%22D_167695804_1%22)", + "someSelected(%22D_524096053_0%22%2C%22D_524096053_1%22)", + "someSelected(%22D_814101706_0%22%2C%22D_814101706_1%22)", + "someSelected(%22D_962475128_0%22%2C%22D_962475128_1%22)", + "someSelected(%22D_989576239_0%22%2C%22D_989576239_1%22)", + "someSelected(%22D_338613869_0%22%2C%22D_338613869_1%22)", + "someSelected(%22D_126794793_0%22%2C%22D_126794793_1%22)", + "someSelected(%22D_218793117_0%22%2C%22D_218793117_1%22)", + "someSelected(%22D_635026188_0%22%2C%22D_635026188_1%22)", + "someSelected(%22D_238135048_0%22%2C%22D_238135048_1%22)", + "someSelected(%22D_632714520_0%22%2C%22D_632714520_1%22)", + "doesNotEqual(D_110872086,707601969)", + "equals(D_110872086,707601969)", + "exists('D_637540387')", + "and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(and(doesNotEqual(D_494226443,104430631),doesNotEqual(D_494226443,178420302)),doesNotEqual(isDefined(D_494226443,-1),-1)),doesNotEqual(D_498462481_1_1,104430631)),doesNotEqual(D_694503437_1_1,104430631)),doesNotEqual(D_498462481_2_2,104430631)),doesNotEqual(D_694503437_2_2,104430631)),doesNotEqual(D_498462481_3_3,104430631)),doesNotEqual(D_694503437_3_3,104430631)),doesNotEqual(D_498462481_4_4,104430631)),doesNotEqual(D_694503437_4_4,104430631)),doesNotEqual(D_498462481_5_5,104430631)),doesNotEqual(D_694503437_5_5,104430631)),doesNotEqual(D_498462481_6_6,104430631)),doesNotEqual(D_694503437_6_6,104430631)),doesNotEqual(D_498462481_7_7,104430631)),doesNotEqual(D_694503437_7_7,104430631)),doesNotEqual(D_498462481_8_8,104430631)),doesNotEqual(D_694503437_8_8,104430631)),doesNotEqual(D_498462481_9_9,104430631)),doesNotEqual(D_694503437_9_9,104430631)),doesNotEqual(D_498462481_10_10,104430631)),doesNotEqual(D_694503437_10_10,104430631)),doesNotEqual(D_498462481_11_11,104430631)),doesNotEqual(D_694503437_11_11,104430631)),doesNotEqual(D_498462481_12_12,104430631)),doesNotEqual(D_694503437_12_12,104430631)),doesNotEqual(D_498462481_13_13,104430631)),doesNotEqual(D_694503437_13_13,104430631)),doesNotEqual(D_498462481_14_14,104430631)),doesNotEqual(D_694503437_14_14,104430631)),doesNotEqual(D_498462481_15_15,104430631)),doesNotEqual(D_694503437_15_15,104430631)),doesNotEqual(D_498462481_16_16,104430631)),doesNotEqual(D_694503437_16_16,104430631)),doesNotEqual(D_498462481_17_17,104430631)),doesNotEqual(D_694503437_17_17,104430631)),doesNotEqual(D_498462481_18_18,104430631)),doesNotEqual(D_694503437_18_18,104430631)),doesNotEqual(D_498462481_19_19,104430631)),doesNotEqual(D_694503437_19_19,104430631)),doesNotEqual(D_498462481_20_20,104430631)),doesNotEqual(D_694503437_20_20,104430631)),doesNotEqual(D_498462481_21_21,104430631)),doesNotEqual(D_694503437_21_21,104430631)),doesNotEqual(D_498462481_22_22,104430631)),doesNotEqual(D_694503437_22_22,104430631)),doesNotEqual(D_498462481_23_23,104430631)),doesNotEqual(D_694503437_23_23,104430631)),doesNotEqual(D_498462481_24_24,104430631)),doesNotEqual(D_694503437_24_24,104430631)),doesNotEqual(D_498462481_25_25,104430631)),doesNotEqual(D_694503437_25_25,104430631))", + "or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(or(equals(D_494226443,104430631),equals(D_494226443,178420302)),equals(isDefined(D_494226443,-1),-1)),equals(D_498462481_1_1,104430631)),equals(D_694503437_1_1,104430631)),equals(D_498462481_2_2,104430631)),equals(D_694503437_2_2,104430631)),equals(D_498462481_3_3,104430631)),equals(D_694503437_3_3,104430631)),equals(D_498462481_4_4,104430631)),equals(D_694503437_4_4,104430631)),equals(D_498462481_5_5,104430631)),equals(D_694503437_5_5,104430631)),equals(D_498462481_6_6,104430631)),equals(D_694503437_6_6,104430631)),equals(D_498462481_7_7,104430631)),equals(D_694503437_7_7,104430631)),equals(D_498462481_8_8,104430631)),equals(D_694503437_8_8,104430631)),equals(D_498462481_9_9,104430631)),equals(D_694503437_9_9,104430631)),equals(D_498462481_10_10,104430631)),equals(D_694503437_10_10,104430631)),equals(D_498462481_11_11,104430631)),equals(D_694503437_11_11,104430631)),equals(D_498462481_12_12,104430631)),equals(D_694503437_12_12,104430631)),equals(D_498462481_13_13,104430631)),equals(D_694503437_13_13,104430631)),equals(D_498462481_14_14,104430631)),equals(D_694503437_14_14,104430631)),equals(D_498462481_15_15,104430631)),equals(D_694503437_15_15,104430631)),equals(D_498462481_16_16,104430631)),equals(D_694503437_16_16,104430631)),equals(D_498462481_17_17,104430631)),equals(D_694503437_17_17,104430631)),equals(D_498462481_18_18,104430631)),equals(D_694503437_18_18,104430631)),equals(D_498462481_19_19,104430631)),equals(D_694503437_19_19,104430631)),equals(D_498462481_20_20,104430631)),equals(D_694503437_20_20,104430631)),equals(D_498462481_21_21,104430631)),equals(D_694503437_21_21,104430631)),equals(D_498462481_22_22,104430631)),equals(D_694503437_22_22,104430631)),equals(D_498462481_23_23,104430631)),equals(D_694503437_23_23,104430631)),equals(D_498462481_24_24,104430631)),equals(D_694503437_24_24,104430631)),equals(D_498462481_25_25,104430631)),equals(D_694503437_25_25,104430631))", + "someSelected(\"D_874168085_0\",\"D_874168085_1\",\"D_283112988_0\",\"D_283112988_1\",\"D_580629349_0\",\"D_580629349_1\",\"D_151327643_0\",\"D_151327643_1\",\"D_440872808_0\",\"D_440872808_1\",\"D_874223830_0\",\"D_874223830_1\",\"D_847529903_0\",\"D_847529903_1\",\"D_219358831_0\",\"D_219358831_1\",\"D_636367178_0\",\"D_636367178_1\",\"D_243443780_0\",\"D_243443780_1\",\"D_357462273_0\",\"D_357462273_1\",\"D_638380747_0\",\"D_638380747_1\",\"D_187399900_0\",\"D_187399900_1\")", + "someSelected(%22D_874168085_0%22%2C%22D_874168085_1%22)", + "someSelected(%22D_283112988_0%22%2C%22D_283112988_1%22)", + "someSelected(%22D_580629349_0%22%2C%22D_580629349_1%22)", + "someSelected(%22D_151327643_0%22%2C%22D_151327643_1%22)", + "someSelected(%22D_440872808_0%22%2C%22D_440872808_1%22)", + "someSelected(%22D_874223830_0%22%2C%22D_874223830_1%22)", + "someSelected(%22D_847529903_0%22%2C%22D_847529903_1%22)", + "someSelected(%22D_219358831_0%22%2C%22D_219358831_1%22)", + "someSelected(%22D_636367178_0%22%2C%22D_636367178_1%22)", + "someSelected(%22D_243443780_0%22%2C%22D_243443780_1%22)", + "someSelected(%22D_357462273_0%22%2C%22D_357462273_1%22)", + "someSelected(%22D_638380747_0%22%2C%22D_638380747_1%22)", + "someSelected(%22D_187399900_0%22%2C%22D_187399900_1%22)", + "greaterThanOrEqual(D_877074400_V2,1)", + "equals(D_220055064_1_1,661871565)", + "equals(D_220055064_1_1,657978450)", + "equals(D_220055064_1_1,411943417)", + "equals(D_220055064_1_1,113838601)", + "equals(D_220055064_1_1,503154121)", + "valueIsOneOf('D_220055064_1_1',807835037) or valueLength('D_395747093_1_1')>0", + "equals(D_220055064_1_1,178420302)", + "greaterThanOrEqual(D_877074400_V2,2)", + "equals(D_220055064_2_2,661871565)", + "equals(D_220055064_2_2,657978450)", + "equals(D_220055064_2_2,411943417)", + "equals(D_220055064_2_2,113838601)", + "equals(D_220055064_2_2,503154121)", + "valueIsOneOf('D_220055064_2_2',807835037) or valueLength('D_395747093_2_2')>0", + "equals(D_220055064_2_2,178420302)", + "greaterThanOrEqual(D_877074400_V2,3)", + "equals(D_220055064_3_3,661871565)", + "equals(D_220055064_3_3,657978450)", + "equals(D_220055064_3_3,411943417)", + "equals(D_220055064_3_3,113838601)", + "equals(D_220055064_3_3,503154121)", + "valueIsOneOf('D_220055064_3_3',807835037) or valueLength('D_395747093_3_3')>0", + "equals(D_220055064_3_3,178420302)", + "greaterThanOrEqual(D_877074400_V2,4)", + "equals(D_220055064_4_4,661871565)", + "equals(D_220055064_4_4,657978450)", + "equals(D_220055064_4_4,411943417)", + "equals(D_220055064_4_4,113838601)", + "equals(D_220055064_4_4,503154121)", + "valueIsOneOf('D_220055064_4_4',807835037) or valueLength('D_395747093_4_4')>0", + "equals(D_220055064_4_4,178420302)", + "greaterThanOrEqual(D_877074400_V2,5)", + "equals(D_220055064_5_5,661871565)", + "equals(D_220055064_5_5,657978450)", + "equals(D_220055064_5_5,411943417)", + "equals(D_220055064_5_5,113838601)", + "equals(D_220055064_5_5,503154121)", + "valueIsOneOf('D_220055064_5_5',807835037) or valueLength('D_395747093_5_5')>0", + "equals(D_220055064_5_5,178420302)", + "greaterThanOrEqual(D_877074400_V2,6)", + "equals(D_220055064_6_6,661871565)", + "equals(D_220055064_6_6,657978450)", + "equals(D_220055064_6_6,411943417)", + "equals(D_220055064_6_6,113838601)", + "equals(D_220055064_6_6,503154121)", + "valueIsOneOf('D_220055064_6_6',807835037) or valueLength('D_395747093_6_6')>0", + "equals(D_220055064_6_6,178420302)", + "greaterThanOrEqual(D_877074400_V2,7)", + "equals(D_220055064_7_7,661871565)", + "equals(D_220055064_7_7,657978450)", + "equals(D_220055064_7_7,411943417)", + "equals(D_220055064_7_7,113838601)", + "equals(D_220055064_7_7,503154121)", + "valueIsOneOf('D_220055064_7_7',807835037) or valueLength('D_395747093_7_7')>0", + "equals(D_220055064_7_7,178420302)", + "greaterThanOrEqual(D_877074400_V2,8)", + "equals(D_220055064_8_8,661871565)", + "equals(D_220055064_8_8,657978450)", + "equals(D_220055064_8_8,411943417)", + "equals(D_220055064_8_8,113838601)", + "equals(D_220055064_8_8,503154121)", + "valueIsOneOf('D_220055064_8_8',807835037) or valueLength('D_395747093_8_8')>0", + "equals(D_220055064_8_8,178420302)", + "greaterThanOrEqual(D_877074400_V2,9)", + "equals(D_220055064_9_9,661871565)", + "equals(D_220055064_9_9,657978450)", + "equals(D_220055064_9_9,411943417)", + "equals(D_220055064_9_9,113838601)", + "equals(D_220055064_9_9,503154121)", + "valueIsOneOf('D_220055064_9_9',807835037) or valueLength('D_395747093_9_9')>0", + "equals(D_220055064_9_9,178420302)", + "greaterThanOrEqual(D_877074400_V2,10)", + "equals(D_220055064_10_10,661871565)", + "equals(D_220055064_10_10,657978450)", + "equals(D_220055064_10_10,411943417)", + "equals(D_220055064_10_10,113838601)", + "equals(D_220055064_10_10,503154121)", + "valueIsOneOf('D_220055064_10_10',807835037) or valueLength('D_395747093_10_10')>0", + "equals(D_220055064_10_10,178420302)", + "greaterThanOrEqual(D_877074400_V2,11)", + "equals(D_220055064_11_11,661871565)", + "equals(D_220055064_11_11,657978450)", + "equals(D_220055064_11_11,411943417)", + "equals(D_220055064_11_11,113838601)", + "equals(D_220055064_11_11,503154121)", + "valueIsOneOf('D_220055064_11_11',807835037) or valueLength('D_395747093_11_11')>0", + "equals(D_220055064_11_11,178420302)", + "greaterThanOrEqual(D_877074400_V2,12)", + "equals(D_220055064_12_12,661871565)", + "equals(D_220055064_12_12,657978450)", + "equals(D_220055064_12_12,411943417)", + "equals(D_220055064_12_12,113838601)", + "equals(D_220055064_12_12,503154121)", + "valueIsOneOf('D_220055064_12_12',807835037) or valueLength('D_395747093_12_12')>0", + "equals(D_220055064_12_12,178420302)", + "greaterThanOrEqual(D_877074400_V2,13)", + "equals(D_220055064_13_13,661871565)", + "equals(D_220055064_13_13,657978450)", + "equals(D_220055064_13_13,411943417)", + "equals(D_220055064_13_13,113838601)", + "equals(D_220055064_13_13,503154121)", + "valueIsOneOf('D_220055064_13_13',807835037) or valueLength('D_395747093_13_13')>0", + "equals(D_220055064_13_13,178420302)", + "greaterThanOrEqual(D_877074400_V2,14)", + "equals(D_220055064_14_14,661871565)", + "equals(D_220055064_14_14,657978450)", + "equals(D_220055064_14_14,411943417)", + "equals(D_220055064_14_14,113838601)", + "equals(D_220055064_14_14,503154121)", + "valueIsOneOf('D_220055064_14_14',807835037) or valueLength('D_395747093_14_14')>0", + "equals(D_220055064_14_14,178420302)", + "greaterThanOrEqual(D_877074400_V2,15)", + "equals(D_220055064_15_15,661871565)", + "equals(D_220055064_15_15,657978450)", + "equals(D_220055064_15_15,411943417)", + "equals(D_220055064_15_15,113838601)", + "equals(D_220055064_15_15,503154121)", + "valueIsOneOf('D_220055064_15_15',807835037) or valueLength('D_395747093_15_15')>0", + "equals(D_220055064_15_15,178420302)", + "greaterThanOrEqual(D_877074400_V2,16)", + "equals(D_220055064_16_16,661871565)", + "equals(D_220055064_16_16,657978450)", + "equals(D_220055064_16_16,411943417)", + "equals(D_220055064_16_16,113838601)", + "equals(D_220055064_16_16,503154121)", + "valueIsOneOf('D_220055064_16_16',807835037) or valueLength('D_395747093_16_16')>0", + "equals(D_220055064_16_16,178420302)", + "greaterThanOrEqual(D_877074400_V2,17)", + "equals(D_220055064_17_17,661871565)", + "equals(D_220055064_17_17,657978450)", + "equals(D_220055064_17_17,411943417)", + "equals(D_220055064_17_17,113838601)", + "equals(D_220055064_17_17,503154121)", + "valueIsOneOf('D_220055064_17_17',807835037) or valueLength('D_395747093_17_17')>0", + "equals(D_220055064_17_17,178420302)", + "greaterThanOrEqual(D_877074400_V2,18)", + "equals(D_220055064_18_18,661871565)", + "equals(D_220055064_18_18,657978450)", + "equals(D_220055064_18_18,411943417)", + "equals(D_220055064_18_18,113838601)", + "equals(D_220055064_18_18,503154121)", + "valueIsOneOf('D_220055064_18_18',807835037) or valueLength('D_395747093_18_18')>0", + "equals(D_220055064_18_18,178420302)", + "greaterThanOrEqual(D_877074400_V2,19)", + "equals(D_220055064_19_19,661871565)", + "equals(D_220055064_19_19,657978450)", + "equals(D_220055064_19_19,411943417)", + "equals(D_220055064_19_19,113838601)", + "equals(D_220055064_19_19,503154121)", + "valueIsOneOf('D_220055064_19_19',807835037) or valueLength('D_395747093_19_19')>0", + "equals(D_220055064_19_19,178420302)", + "greaterThanOrEqual(D_877074400_V2,20)", + "equals(D_220055064_20_20,661871565)", + "equals(D_220055064_20_20,657978450)", + "equals(D_220055064_20_20,411943417)", + "equals(D_220055064_20_20,113838601)", + "equals(D_220055064_20_20,503154121)", + "valueIsOneOf('D_220055064_20_20',807835037) or valueLength('D_395747093_20_20')>0", + "equals(D_220055064_20_20,178420302)", + "greaterThanOrEqual(D_877074400_V2,21)", + "equals(D_220055064_21_21,661871565)", + "equals(D_220055064_21_21,657978450)", + "equals(D_220055064_21_21,411943417)", + "equals(D_220055064_21_21,113838601)", + "equals(D_220055064_21_21,503154121)", + "valueIsOneOf('D_220055064_21_21',807835037) or valueLength('D_395747093_21_21')>0", + "equals(D_220055064_21_21,178420302)", + "greaterThanOrEqual(D_877074400_V2,22)", + "equals(D_220055064_22_22,661871565)", + "equals(D_220055064_22_22,657978450)", + "equals(D_220055064_22_22,411943417)", + "equals(D_220055064_22_22,113838601)", + "equals(D_220055064_22_22,503154121)", + "valueIsOneOf('D_220055064_22_22',807835037) or valueLength('D_395747093_22_22')>0", + "equals(D_220055064_22_22,178420302)", + "greaterThanOrEqual(D_877074400_V2,23)", + "equals(D_220055064_23_23,661871565)", + "equals(D_220055064_23_23,657978450)", + "equals(D_220055064_23_23,411943417)", + "equals(D_220055064_23_23,113838601)", + "equals(D_220055064_23_23,503154121)", + "valueIsOneOf('D_220055064_23_23',807835037) or valueLength('D_395747093_23_23')>0", + "equals(D_220055064_23_23,178420302)", + "greaterThanOrEqual(D_877074400_V2,24)", + "equals(D_220055064_24_24,661871565)", + "equals(D_220055064_24_24,657978450)", + "equals(D_220055064_24_24,411943417)", + "equals(D_220055064_24_24,113838601)", + "equals(D_220055064_24_24,503154121)", + "valueIsOneOf('D_220055064_24_24',807835037) or valueLength('D_395747093_24_24')>0", + "equals(D_220055064_24_24,178420302)", + "greaterThanOrEqual(D_877074400_V2,25)", + "equals(D_220055064_25_25,661871565)", + "equals(D_220055064_25_25,657978450)", + "equals(D_220055064_25_25,411943417)", + "equals(D_220055064_25_25,113838601)", + "equals(D_220055064_25_25,503154121)", + "valueIsOneOf('D_220055064_25_25',807835037) or valueLength('D_395747093_25_25')>0", + "equals(D_220055064_25_25,178420302)" + ], + "sitesByScope": { + "grid-row": 29, + "inline": 479, + "question": 589 + }, + "sitesByAttribute": { + "data-displayif": 29, + "displayif": 1068 + } + }, + "grids": [ + { + "questionId": "D_847578001", + "questionIndex": 505, + "rowQuestionIds": [ + "D_488415137", + "D_167695804", + "D_730334054", + "D_215996690", + "D_462737492", + "D_469675296" + ], + "rowCount": 6, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "724612102", + "178780048", + "244354126" + ] + }, + { + "questionId": "D_136730307", + "questionIndex": 506, + "rowQuestionIds": [ + "D_962475128", + "D_989576239", + "D_338613869", + "D_126794793", + "D_218793117" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "724612102", + "178780048", + "244354126" + ] + }, + { + "questionId": "D_751358419", + "questionIndex": 507, + "rowQuestionIds": [ + "D_524096053", + "D_814101706", + "D_635026188", + "D_238135048", + "D_632714520" + ], + "rowCount": 5, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "724612102", + "178780048", + "244354126" + ] + }, + { + "questionId": "D_114280729", + "questionIndex": 511, + "rowQuestionIds": [ + "D_374567479", + "D_966214244", + "D_109223043", + "D_368669706", + "D_605818246", + "D_790860504", + "D_336856410", + "D_518602598", + "D_770190369", + "D_994153376", + "D_481587023", + "D_590361055", + "D_108389123", + "D_747085418", + "D_702905707", + "D_986119909" + ], + "rowCount": 16, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "232063618", + "948148236", + "692824372" + ] + }, + { + "questionId": "D_813989715", + "questionIndex": 517, + "rowQuestionIds": [ + "D_874168085", + "D_283112988", + "D_580629349", + "D_151327643", + "D_440872808", + "D_874223830" + ], + "rowCount": 6, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "931688701", + "586272115", + "770236544" + ] + }, + { + "questionId": "D_857165713", + "questionIndex": 518, + "rowQuestionIds": [ + "D_847529903", + "D_219358831", + "D_636367178", + "D_243443780", + "D_357462273", + "D_638380747", + "D_187399900" + ], + "rowCount": 7, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "931688701", + "586272115", + "770236544" + ] + }, + { + "questionId": "D_749956170", + "questionIndex": 519, + "rowQuestionIds": [ + "D_527872064", + "D_691752394", + "D_143206081", + "D_431203595", + "D_516899143", + "D_223008071", + "D_599862694", + "D_860444009", + "D_246857412", + "D_144819886", + "D_304155106", + "D_830581863", + "D_463689026" + ], + "rowCount": 13, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "232063618", + "948148236", + "692824372" + ] + } + ], + "loops": [ + { + "loopIndex": "1", + "loopMaxQuestionIds": [ + "D_860011428" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 3, + 23, + 43, + 63, + 83, + 103, + 123, + 143, + 163, + 183, + 203, + 223, + 243, + 263, + 283, + 303, + 323, + 343, + 363, + 383, + 403, + 423, + 443, + 463, + 483 + ], + "boundaryIndex": 503 + }, + { + "loopIndex": "2", + "loopMaxQuestionIds": [ + "D_877074400_V2" + ], + "iterationCount": 25, + "iterationStartIndexes": [ + 523, + 526, + 529, + 532, + 535, + 538, + 541, + 544, + 547, + 550, + 553, + 556, + 559, + 562, + 565, + 568, + 571, + 574, + 577, + 580, + 583, + 586, + 589, + 592, + 595 + ], + "boundaryIndex": 598 + } + ], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 97, + "processorQuestionCount": 600, + "processedQuestionCount": 600, + "renderedFormCount": 600, + "controlCount": 3922, + "responseControlCount": 1970, + "explicitTransitionCount": 540, + "sequentialAdjacencyCount": 599, + "resolvedExplicitTransitionCount": 540, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 1097, + "gridQuestionCount": 7, + "gridRowCount": 58, + "loopStartCount": 50, + "loopDefinitionCount": 2, + "loopExpandedQuestionCount": 575, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 517 + } + }, + { + "schemaVersion": 1, + "module": "moduleCancerScreeningHistory", + "locale": "en", + "language": "en", + "path": "prod/moduleCancerScreeningHistory.txt", + "sha256": "65207c189b9b62836afc43cb80c12b416612b3d246a71d257804e0924c7817b2", + "questName": "D_369168474", + "version": "1.2", + "authoredMarkerCount": 144, + "runtimeQuestionIds": [ + "SRVSCR_INTROSCREEN_V1R0", + "D_890391968?", + "D_413039729?", + "D_729984625?", + "D_675055475?", + "D_250003172?", + "D_341080024?", + "D_841573821?", + "D_976626196?", + "D_951847507?", + "D_998519118?", + "D_645149364?", + "D_839555631?", + "D_506456253?", + "D_439760665?", + "D_950690103?", + "D_975268706?", + "D_277890744?", + "D_936444833?", + "D_758881441?", + "D_765772509?", + "D_250353250?", + "D_116546181?", + "D_496928179?", + "D_166524009?", + "D_367942006?", + "D_907385951?", + "D_350184001?", + "D_522645663?", + "D_590067228?", + "D_787505819?", + "D_860839849?", + "D_949587133?", + "D_671670265?", + "D_429157727?", + "D_314345103?", + "D_292314539?", + "D_343990595?", + "D_203366781?", + "SRVSCR_ORSCREENINT_V1R0", + "D_802157786?", + "D_852697610?", + "D_860253133?", + "D_682440005?", + "D_339142996?", + "D_375662706?", + "D_859197222?", + "D_529358901?", + "D_365148290?", + "D_988661374?", + "D_619830872?", + "D_226488112?", + "D_884856351?", + "D_900561740?", + "D_729390410?", + "D_869938650?", + "D_541338917?", + "D_833553697?", + "D_689280509?", + "D_108417657?", + "D_822995885?", + "D_677043723?", + "D_960218176?", + "D_806961194?", + "D_129025755?", + "D_702922820?", + "D_236655642?", + "D_581174597?", + "D_524918714?", + "D_584375130?", + "D_221189280?", + "D_737402324?", + "D_552399966?", + "D_124071431?", + "D_113343940?", + "D_925516907?", + "D_506482920?", + "D_991871399?", + "D_761831751?", + "D_588828383?", + "D_485867936?", + "D_465056475?", + "D_718137053?", + "D_199704727?", + "D_621714179?", + "D_772645761?", + "D_650508014?", + "D_903059223?", + "D_214352460?", + "D_770939852?", + "D_423202492?", + "D_961267001?", + "D_745742553?", + "D_111580947?", + "D_709088568?", + "D_372457715?", + "D_315184598?", + "D_560107274?", + "D_569358384?", + "D_305769587?", + "D_434993234?", + "D_846067697?", + "D_861488320?", + "D_891793989?", + "D_811848389?", + "D_957875649?", + "D_406370140?", + "D_951078002?", + "D_631089527?", + "D_475018570?", + "D_227617345?", + "D_274709835?", + "D_229764995?", + "D_934385625?", + "D_393386163?", + "D_856699079?", + "D_723960145?", + "D_353889236?", + "D_242001363?", + "D_623413449?", + "D_153215425?", + "D_115504049?", + "D_356470898?", + "D_947994136?", + "D_898341670?", + "D_913107034?", + "D_655198446?", + "D_809308794?", + "D_766549014?", + "D_496588916?", + "D_104842019?", + "D_315199788?", + "D_249853484?", + "D_391300412?", + "D_808990505?", + "D_219076879?", + "D_822790675?", + "D_459223565?", + "D_397748152?", + "D_553034408?", + "D_698242759?", + "D_695772621?", + "D_431721131?", + "END" + ], + "responseControlsByType": { + "checkbox": 71, + "number": 56, + "radio": 553, + "text": 1 + }, + "explicitTransitions": { + "targets": [ + "D_675055475", + "D_250003172", + "D_341080024", + "D_841573821", + "D_976626196", + "D_951847507", + "D_645149364", + "D_839555631", + "D_506456253", + "D_350184001", + "D_522645663", + "D_590067228", + "D_860839849", + "D_671670265", + "D_429157727", + "D_292314539", + "D_203366781", + "SRVSCR_ORSCREENINT_V1R0", + "D_998519118", + "D_439760665", + "D_950690103", + "D_975268706", + "D_277890744", + "D_936444833", + "D_758881441", + "D_765772509", + "D_166524009", + "D_367942006", + "D_907385951", + "D_250353250", + "D_116546181", + "D_496928179", + "D_787505819", + "D_949587133", + "D_314345103", + "D_343990595", + "D_365148290", + "D_339142996", + "D_988661374", + "D_884856351", + "D_869938650", + "D_689280509", + "D_677043723", + "D_129025755", + "D_619830872", + "D_226488112", + "D_900561740", + "D_729390410", + "D_541338917", + "D_833553697", + "D_108417657", + "D_822995885", + "D_960218176", + "D_806961194", + "D_524918714", + "D_552399966", + "D_991871399", + "D_113343940", + "D_925516907", + "D_506482920", + "D_465056475", + "D_718137053", + "D_772645761", + "D_214352460", + "D_961267001", + "D_199704727", + "D_621714179", + "D_650508014", + "D_903059223", + "D_770939852", + "D_423202492", + "D_745742553", + "D_315184598", + "D_305769587", + "D_861488320", + "D_957875649", + "D_111580947", + "D_372457715", + "D_709088568", + "D_560107274", + "D_569358384", + "D_434993234", + "D_846067697", + "D_891793989", + "D_811848389", + "D_406370140", + "D_475018570", + "D_229764995", + "D_951078002", + "D_631089527", + "D_227617345", + "D_274709835", + "D_934385625", + "D_723960145", + "D_623413449", + "D_356470898", + "D_393386163", + "D_856699079", + "D_353889236", + "D_242001363", + "D_153215425", + "D_115504049", + "D_947994136", + "D_655198446", + "D_496588916", + "D_249853484", + "D_219076879", + "D_898341670", + "D_913107034", + "D_809308794", + "D_766549014", + "D_104842019", + "D_315199788", + "D_391300412", + "D_808990505", + "D_822790675", + "D_553034408", + "D_431721131", + "D_459223565", + "D_397748152", + "D_698242759", + "D_695772621" + ], + "byKind": { + "default": 36, + "no-response": 13, + "response": 188 + }, + "byResolution": { + "exact": 237 + }, + "triggerTypes": { + "checkbox": 51, + "hidden": 49, + "radio": 137 + }, + "triggerValues": [ + "797189152", + "633546100", + "866002271", + "209101810", + "413734739", + "215525943", + "118789503", + "715563991", + "533491176", + "220755749", + "465318416", + "630100221", + "692881833", + "654450030", + "532603425", + "733236542", + "961987554", + "113771607", + "668256654", + "752953170", + "325506683", + "335563082", + "955881350", + "492902023", + "256196714", + "802859122", + "520432394", + "667901971", + "807835037", + "308633554", + "967156738", + "535003378", + "333647143", + "109972911", + "448068764", + "537173119", + "770550588", + "970716952", + "524029283", + "500023550", + "104430631", + "178420302", + "236949684", + "203210013", + "219088015", + "283265038", + "691148901", + "928432579", + "506053626", + "462661976", + "119809731", + "282580702", + "934779560", + "956827502", + "312250694", + "255054078", + "492921091", + "577887061", + "419571068", + "726183532", + "898042848", + "903156464", + "474921307", + "405616098", + "646114392", + "673135412", + "687879041", + "531274737", + "650022485", + "891052313", + "875157431", + "309925717" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "valueIsOneOf(\"D_951847507\",113771607,668256654)", + "equals(D_506456253,752953170)", + "equals(D_506456253,325506683)", + "equals(D_506456253,335563082)", + "equals(D_506456253,955881350)", + "equals(D_506456253,492902023)", + "equals(D_506456253,256196714)", + "equals(D_506456253,802859122)", + "equals(D_765772509,308633554)", + "equals(D_765772509,967156738)", + "equals(D_506456253,520432394)", + "equals(D_506456253,667901971)", + "equals(D_506456253,807835037)", + "exists('D_942347130')", + "doesNotExist('D_942347130')", + "valueIsOneOf(\"D_590067228\",333647143,109972911)", + "equals(D_729984625,692881833)", + "valueIsOneOf(\"D_860839849\",448068764,537173119)", + "valueIsOneOf(\"D_429157727\",770550588,970716952)", + "valueIsOneOf(\"D_292314539\",524029283,500023550)", + "equals(D_802157786,353358909)", + "equals(D_339142996,353358909)", + "equals(D_365148290,203210013)", + "valueIsOneOf(\"D_619830872\",506053626,462661976,178420302)", + "equals(D_365148290,219088015)", + "valueIsOneOf(\"D_900561740\",506053626,462661976,178420302)", + "equals(D_365148290,283265038)", + "valueIsOneOf(\"D_541338917\",506053626,462661976,178420302)", + "equals(D_365148290,691148901)", + "valueIsOneOf(\"D_108417657\",506053626,462661976,178420302)", + "equals(D_365148290,928432579)", + "valueIsOneOf(\"D_960218176\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_129025755,353358909)", + "valueIsOneOf(\"D_236655642\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_524918714,353358909)", + "valueIsOneOf(\"D_221189280\",506053626,462661976,178420302)", + "equals(D_552399966,353358909)", + "valueIsOneOf(\"D_925516907\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_991871399,353358909)", + "valueIsOneOf(\"D_588828383\",506053626,462661976,178420302)", + "or(equals(D_890391968,700100953),equals(D_729984625,733236542))", + "equals(D_465056475,312250694)", + "valueIsOneOf(\"D_199704727\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_465056475,255054078)", + "valueIsOneOf(\"D_650508014\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_465056475,492921091)", + "valueIsOneOf(\"D_770939852\",506053626,462661976,178420302)", + "valueIsOneOf(\"D_413039729\",145235510,801218076)", + "equals(D_961267001,577887061)", + "valueIsOneOf(\"D_111580947\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_961267001,419571068)", + "valueIsOneOf(\"D_560107274\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_961267001,726183532)", + "valueIsOneOf(\"D_434993234\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_961267001,898042848)", + "valueIsOneOf(\"D_891793989\",506053626,119809731,282580702,934779560,178420302)", + "or(or(equals(D_890391968,434651539),equals(D_729984625,220755749)),equals(D_729984625,630100221))", + "equals(D_957875649,903156464)", + "valueIsOneOf(\"D_951078002\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_957875649,474921307)", + "valueIsOneOf(\"D_227617345\",506053626,119809731,282580702,934779560,178420302)", + "or(equals(D_890391968,505282171),equals(D_729984625,220755749))", + "equals(D_229764995,405616098)", + "valueIsOneOf(\"D_393386163\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_229764995,646114392)", + "valueIsOneOf(\"D_353889236\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_229764995,673135412)", + "valueIsOneOf(\"D_153215425\",506053626,119809731,282580702,934779560,178420302)", + "or(equals(D_890391968,578416151),equals(D_729984625,220755749))", + "equals(D_356470898,687879041)", + "valueIsOneOf(\"D_898341670\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_356470898,531274737)", + "valueIsOneOf(\"D_809308794\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_356470898,650022485)", + "valueIsOneOf(\"D_104842019\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_356470898,891052313)", + "valueIsOneOf(\"D_391300412\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_219076879,875157431)", + "valueIsOneOf(\"D_459223565\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_219076879,309925717)", + "valueIsOneOf(\"D_698242759\",506053626,119809731,282580702,934779560,178420302)" + ], + "sitesByScope": { + "inline": 2, + "question": 105 + }, + "sitesByAttribute": { + "displayif": 107 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 144, + "processorQuestionCount": 144, + "processedQuestionCount": 144, + "renderedFormCount": 144, + "controlCount": 1158, + "responseControlCount": 681, + "explicitTransitionCount": 237, + "sequentialAdjacencyCount": 143, + "resolvedExplicitTransitionCount": 237, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 107, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 81 + } + }, + { + "schemaVersion": 1, + "module": "moduleCancerScreeningHistory", + "locale": "es", + "language": "es", + "path": "prod/moduleCancerScreeningHistorySpanish.txt", + "sha256": "dd93c2e963d9c0f2eb202667a45748ca576aefed4157f315a6e8ddef95eb7c38", + "questName": "D_369168474", + "version": "1.2", + "authoredMarkerCount": 144, + "runtimeQuestionIds": [ + "SRVSCR_INTROSCREEN_V1R0", + "D_890391968?", + "D_413039729?", + "D_729984625?", + "D_675055475?", + "D_250003172?", + "D_341080024?", + "D_841573821?", + "D_976626196?", + "D_951847507?", + "D_998519118?", + "D_645149364?", + "D_839555631?", + "D_506456253?", + "D_439760665?", + "D_950690103?", + "D_975268706?", + "D_277890744?", + "D_936444833?", + "D_758881441?", + "D_765772509?", + "D_250353250?", + "D_116546181?", + "D_496928179?", + "D_166524009?", + "D_367942006?", + "D_907385951?", + "D_350184001?", + "D_522645663?", + "D_590067228?", + "D_787505819?", + "D_860839849?", + "D_949587133?", + "D_671670265?", + "D_429157727?", + "D_314345103?", + "D_292314539?", + "D_343990595?", + "D_203366781?", + "SRVSCR_ORSCREENINT_V1R0", + "D_802157786?", + "D_852697610?", + "D_860253133?", + "D_682440005?", + "D_339142996?", + "D_375662706?", + "D_859197222?", + "D_529358901?", + "D_365148290?", + "D_988661374?", + "D_619830872?", + "D_226488112?", + "D_884856351?", + "D_900561740?", + "D_729390410?", + "D_869938650?", + "D_541338917?", + "D_833553697?", + "D_689280509?", + "D_108417657?", + "D_822995885?", + "D_677043723?", + "D_960218176?", + "D_806961194?", + "D_129025755?", + "D_702922820?", + "D_236655642?", + "D_581174597?", + "D_524918714?", + "D_584375130?", + "D_221189280?", + "D_737402324?", + "D_552399966?", + "D_124071431?", + "D_113343940?", + "D_925516907?", + "D_506482920?", + "D_991871399?", + "D_761831751?", + "D_588828383?", + "D_485867936?", + "D_465056475?", + "D_718137053?", + "D_199704727?", + "D_621714179?", + "D_772645761?", + "D_650508014?", + "D_903059223?", + "D_214352460?", + "D_770939852?", + "D_423202492?", + "D_961267001?", + "D_745742553?", + "D_111580947?", + "D_709088568?", + "D_372457715?", + "D_315184598?", + "D_560107274?", + "D_569358384?", + "D_305769587?", + "D_434993234?", + "D_846067697?", + "D_861488320?", + "D_891793989?", + "D_811848389?", + "D_957875649?", + "D_406370140?", + "D_951078002?", + "D_631089527?", + "D_475018570?", + "D_227617345?", + "D_274709835?", + "D_229764995?", + "D_934385625?", + "D_393386163?", + "D_856699079?", + "D_723960145?", + "D_353889236?", + "D_242001363?", + "D_623413449?", + "D_153215425?", + "D_115504049?", + "D_356470898?", + "D_947994136?", + "D_898341670?", + "D_913107034?", + "D_655198446?", + "D_809308794?", + "D_766549014?", + "D_496588916?", + "D_104842019?", + "D_315199788?", + "D_249853484?", + "D_391300412?", + "D_808990505?", + "D_219076879?", + "D_822790675?", + "D_459223565?", + "D_397748152?", + "D_553034408?", + "D_698242759?", + "D_695772621?", + "D_431721131?", + "END" + ], + "responseControlsByType": { + "checkbox": 71, + "number": 56, + "radio": 553, + "text": 1 + }, + "explicitTransitions": { + "targets": [ + "D_675055475", + "D_250003172", + "D_341080024", + "D_841573821", + "D_976626196", + "D_951847507", + "D_645149364", + "D_839555631", + "D_506456253", + "D_350184001", + "D_522645663", + "D_590067228", + "D_860839849", + "D_671670265", + "D_429157727", + "D_292314539", + "D_203366781", + "SRVSCR_ORSCREENINT_V1R0", + "D_998519118", + "D_439760665", + "D_950690103", + "D_975268706", + "D_277890744", + "D_936444833", + "D_758881441", + "D_765772509", + "D_166524009", + "D_367942006", + "D_907385951", + "D_250353250", + "D_116546181", + "D_496928179", + "D_787505819", + "D_949587133", + "D_314345103", + "D_343990595", + "D_365148290", + "D_339142996", + "D_988661374", + "D_884856351", + "D_869938650", + "D_689280509", + "D_677043723", + "D_129025755", + "D_619830872", + "D_226488112", + "D_900561740", + "D_729390410", + "D_541338917", + "D_833553697", + "D_108417657", + "D_822995885", + "D_960218176", + "D_806961194", + "D_524918714", + "D_552399966", + "D_991871399", + "D_113343940", + "D_925516907", + "D_506482920", + "D_465056475", + "D_718137053", + "D_772645761", + "D_214352460", + "D_961267001", + "D_199704727", + "D_621714179", + "D_650508014", + "D_903059223", + "D_770939852", + "D_423202492", + "D_745742553", + "D_315184598", + "D_305769587", + "D_861488320", + "D_957875649", + "D_111580947", + "D_372457715", + "D_709088568", + "D_560107274", + "D_569358384", + "D_434993234", + "D_846067697", + "D_891793989", + "D_811848389", + "D_406370140", + "D_475018570", + "D_229764995", + "D_951078002", + "D_631089527", + "D_227617345", + "D_274709835", + "D_934385625", + "D_723960145", + "D_623413449", + "D_356470898", + "D_393386163", + "D_856699079", + "D_353889236", + "D_242001363", + "D_153215425", + "D_115504049", + "D_947994136", + "D_655198446", + "D_496588916", + "D_249853484", + "D_219076879", + "D_898341670", + "D_913107034", + "D_809308794", + "D_766549014", + "D_104842019", + "D_315199788", + "D_391300412", + "D_808990505", + "D_822790675", + "D_553034408", + "D_431721131", + "D_459223565", + "D_397748152", + "D_698242759", + "D_695772621" + ], + "byKind": { + "default": 36, + "no-response": 13, + "response": 188 + }, + "byResolution": { + "exact": 237 + }, + "triggerTypes": { + "checkbox": 51, + "hidden": 49, + "radio": 137 + }, + "triggerValues": [ + "797189152", + "633546100", + "866002271", + "209101810", + "413734739", + "215525943", + "118789503", + "715563991", + "533491176", + "220755749", + "465318416", + "630100221", + "692881833", + "654450030", + "532603425", + "733236542", + "961987554", + "113771607", + "668256654", + "752953170", + "325506683", + "335563082", + "955881350", + "492902023", + "256196714", + "802859122", + "520432394", + "667901971", + "807835037", + "308633554", + "967156738", + "535003378", + "333647143", + "109972911", + "448068764", + "537173119", + "770550588", + "970716952", + "524029283", + "500023550", + "104430631", + "178420302", + "236949684", + "203210013", + "219088015", + "283265038", + "691148901", + "928432579", + "506053626", + "462661976", + "119809731", + "282580702", + "934779560", + "956827502", + "312250694", + "255054078", + "492921091", + "577887061", + "419571068", + "726183532", + "898042848", + "903156464", + "474921307", + "405616098", + "646114392", + "673135412", + "687879041", + "531274737", + "650022485", + "891052313", + "875157431", + "309925717" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "valueIsOneOf(\"D_951847507\",113771607,668256654)", + "equals(D_506456253,752953170)", + "equals(D_506456253,325506683)", + "equals(D_506456253,335563082)", + "equals(D_506456253,955881350)", + "equals(D_506456253,492902023)", + "equals(D_506456253,256196714)", + "equals(D_506456253,802859122)", + "equals(D_765772509,308633554)", + "equals(D_765772509,967156738)", + "equals(D_506456253,520432394)", + "equals(D_506456253,667901971)", + "equals(D_506456253,807835037)", + "exists('D_942347130')", + "doesNotExist('D_942347130')", + "valueIsOneOf(\"D_590067228\",333647143,109972911)", + "valueIsOneOf(\"D_860839849\",448068764,537173119)", + "valueIsOneOf(\"D_429157727\",770550588,970716952)", + "valueIsOneOf(\"D_292314539\",524029283,500023550)", + "equals(D_802157786,353358909)", + "equals(D_339142996,353358909)", + "equals(D_365148290,203210013)", + "valueIsOneOf(\"D_619830872\",506053626,462661976,178420302)", + "equals(D_365148290,219088015)", + "valueIsOneOf(\"D_900561740\",506053626,462661976,178420302)", + "equals(D_365148290,283265038)", + "valueIsOneOf(\"D_541338917\",506053626,462661976,178420302)", + "equals(D_365148290,691148901)", + "valueIsOneOf(\"D_108417657\",506053626,462661976,178420302)", + "equals(D_365148290,928432579)", + "valueIsOneOf(\"D_960218176\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_129025755,353358909)", + "valueIsOneOf(\"D_236655642\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_524918714,353358909)", + "valueIsOneOf(\"D_221189280\",506053626,462661976,178420302)", + "equals(D_552399966,353358909)", + "valueIsOneOf(\"D_925516907\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_991871399,353358909)", + "valueIsOneOf(\"D_588828383\",506053626,462661976,178420302)", + "or(equals(D_890391968,700100953),equals(D_729984625,733236542))", + "equals(D_465056475,312250694)", + "valueIsOneOf(\"D_199704727\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_465056475,255054078)", + "valueIsOneOf(\"D_650508014\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_465056475,492921091)", + "valueIsOneOf(\"D_770939852\",506053626,462661976,178420302)", + "valueIsOneOf(\"D_413039729\",145235510,801218076)", + "equals(D_961267001,577887061)", + "valueIsOneOf(\"D_111580947\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_961267001,419571068)", + "valueIsOneOf(\"D_560107274\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_961267001,726183532)", + "valueIsOneOf(\"D_434993234\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_961267001,898042848)", + "valueIsOneOf(\"D_891793989\",506053626,119809731,282580702,934779560,178420302)", + "or(or(equals(D_890391968,434651539),equals(D_729984625,220755749)),equals(D_729984625,630100221))", + "equals(D_957875649,903156464)", + "valueIsOneOf(\"D_951078002\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_957875649,474921307)", + "valueIsOneOf(\"D_227617345\",506053626,119809731,282580702,934779560,178420302)", + "or(equals(D_890391968,505282171),equals(D_729984625,220755749))", + "equals(D_229764995,405616098)", + "valueIsOneOf(\"D_393386163\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_229764995,646114392)", + "valueIsOneOf(\"D_353889236\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_229764995,673135412)", + "valueIsOneOf(\"D_153215425\",506053626,119809731,282580702,934779560,178420302)", + "or(equals(D_890391968,578416151),equals(D_729984625,220755749))", + "equals(D_356470898,687879041)", + "valueIsOneOf(\"D_898341670\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_356470898,531274737)", + "valueIsOneOf(\"D_809308794\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_356470898,650022485)", + "valueIsOneOf(\"D_104842019\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_356470898,891052313)", + "valueIsOneOf(\"D_391300412\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_219076879,875157431)", + "valueIsOneOf(\"D_459223565\",506053626,119809731,282580702,934779560,178420302)", + "equals(D_219076879,309925717)", + "valueIsOneOf(\"D_698242759\",506053626,119809731,282580702,934779560,178420302)" + ], + "sitesByScope": { + "inline": 2, + "question": 104 + }, + "sitesByAttribute": { + "displayif": 106 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 144, + "processorQuestionCount": 144, + "processedQuestionCount": 144, + "renderedFormCount": 144, + "controlCount": 1158, + "responseControlCount": 681, + "explicitTransitionCount": 237, + "sequentialAdjacencyCount": 143, + "resolvedExplicitTransitionCount": 237, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 106, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 80 + } + }, + { + "schemaVersion": 1, + "module": "moduleClinicalBloodUrine", + "locale": "en", + "language": "en", + "path": "prod/moduleClinicalBloodUrine.txt", + "sha256": "da2014adad00d371c0044fdfe1095af570e253c293ea3e88023045d51762a91e", + "questName": "D_826163434", + "version": "1.4", + "authoredMarkerCount": 21, + "runtimeQuestionIds": [ + "SRVBIO_MODULEINTRO_V1R0", + "D_522008539?", + "D_470484596?", + "D_867307558?", + "D_191057574_V2?", + "D_299417266_V2?", + "D_689861450_V2?", + "D_487532606", + "SRVBLU_REPROINTRO_V1R0", + "D_380603392!", + "D_112151599!", + "D_644459734!", + "D_518916981?", + "D_234714655?", + "D_798452445?", + "D_563539159?", + "D_875535246?", + "D_130311122?", + "END" + ], + "responseControlsByType": { + "checkbox": 6, + "date": 1, + "radio": 36, + "time": 3 + }, + "explicitTransitions": { + "targets": [ + "D_299417266_V2", + "D_518916981", + "D_798452445", + "D_875535246" + ], + "byKind": { + "response": 5 + }, + "byResolution": { + "exact": 5 + }, + "triggerTypes": { + "radio": 5 + }, + "triggerValues": [ + "330461666", + "104430631", + "353358909" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_522008539,536341288)", + "equals(D_518916981,104430631)" + ], + "sitesByScope": { + "question": 10 + }, + "sitesByAttribute": { + "displayif": 10 + } + }, + "grids": [ + { + "questionId": "D_487532606", + "questionIndex": 7, + "rowQuestionIds": [ + "D_619765650", + "D_520755310", + "D_839329467" + ], + "rowCount": 3, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "104430631", + "974230748", + "936042740", + "731141335", + "591670915" + ] + } + ], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 21, + "processorQuestionCount": 19, + "processedQuestionCount": 19, + "renderedFormCount": 19, + "controlCount": 99, + "responseControlCount": 46, + "explicitTransitionCount": 5, + "sequentialAdjacencyCount": 18, + "resolvedExplicitTransitionCount": 5, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 10, + "gridQuestionCount": 1, + "gridRowCount": 3, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 2 + } + }, + { + "schemaVersion": 1, + "module": "moduleClinicalBloodUrine", + "locale": "es", + "language": "es", + "path": "prod/moduleClinicalBloodUrineSpanish.txt", + "sha256": "2898151d137c3f33ecf857b4f82561d6c42ae0c6c1947d47a1317ba24c9de987", + "questName": "D_826163434", + "version": "1.4", + "authoredMarkerCount": 21, + "runtimeQuestionIds": [ + "SRVBIO_MODULEINTRO_V1R0", + "D_522008539?", + "D_470484596?", + "D_867307558?", + "D_191057574_V2?", + "D_299417266_V2?", + "D_689861450_V2?", + "D_487532606", + "SRVBLU_REPROINTRO_V1R0", + "D_380603392!", + "D_112151599!", + "D_644459734!", + "D_518916981?", + "D_234714655?", + "D_798452445?", + "D_563539159?", + "D_875535246?", + "D_130311122?", + "END" + ], + "responseControlsByType": { + "checkbox": 6, + "date": 1, + "radio": 36, + "time": 3 + }, + "explicitTransitions": { + "targets": [ + "D_299417266_V2", + "D_518916981", + "D_798452445", + "D_875535246" + ], + "byKind": { + "response": 5 + }, + "byResolution": { + "exact": 5 + }, + "triggerTypes": { + "radio": 5 + }, + "triggerValues": [ + "330461666", + "104430631", + "353358909" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_522008539,536341288)", + "equals(D_518916981,104430631)" + ], + "sitesByScope": { + "question": 10 + }, + "sitesByAttribute": { + "displayif": 10 + } + }, + "grids": [ + { + "questionId": "D_487532606", + "questionIndex": 7, + "rowQuestionIds": [ + "D_619765650", + "D_520755310", + "D_839329467" + ], + "rowCount": 3, + "responseTypes": [ + "radio" + ], + "responseValues": [ + "104430631", + "974230748", + "936042740", + "731141335", + "591670915" + ] + } + ], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 21, + "processorQuestionCount": 19, + "processedQuestionCount": 19, + "renderedFormCount": 19, + "controlCount": 99, + "responseControlCount": 46, + "explicitTransitionCount": 5, + "sequentialAdjacencyCount": 18, + "resolvedExplicitTransitionCount": 5, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 10, + "gridQuestionCount": 1, + "gridRowCount": 3, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 2 + } + }, + { + "schemaVersion": 1, + "module": "moduleDietScreener", + "locale": "en", + "language": "en", + "path": "prod/moduleDietScreener", + "sha256": "bfe990625139d13c6125245a441c8fcb666bcbac905e577ef374df8f708f5dca", + "questName": "D_515124081", + "version": "1.0", + "authoredMarkerCount": 3, + "runtimeQuestionIds": [ + "INTRO_SRVDSQ", + "D_916948380?", + "END" + ], + "responseControlsByType": { + "radio": 157 + }, + "explicitTransitions": { + "targets": [], + "byKind": {}, + "byResolution": {}, + "triggerTypes": {}, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "processedQuestionCount": 3, + "renderedFormCount": 3, + "controlCount": 163, + "responseControlCount": 157, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 2, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + }, + { + "schemaVersion": 1, + "module": "moduleDietScreener", + "locale": "es", + "language": "es", + "path": "prod/moduleDietScreenerSpanish.txt", + "sha256": "40a21887c151720e2ce65450154e0ab8b21f5d94c6324de3f8417b35e2d5564a", + "questName": "D_515124081", + "version": "1.0", + "authoredMarkerCount": 3, + "runtimeQuestionIds": [ + "INTRO_SRVDSQ", + "D_916948380?", + "END" + ], + "responseControlsByType": { + "radio": 157 + }, + "explicitTransitions": { + "targets": [], + "byKind": {}, + "byResolution": {}, + "triggerTypes": {}, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "processedQuestionCount": 3, + "renderedFormCount": 3, + "controlCount": 163, + "responseControlCount": 157, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 2, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + }, + { + "schemaVersion": 1, + "module": "moduleMenstrual", + "locale": "en", + "language": "en", + "path": "prod/moduleMenstrual.txt", + "sha256": "13de3a43aed31befdda5be4c805a3b885e36df9275f742a19ca931e360e159b2", + "questName": "D_912367929", + "version": "1.1", + "authoredMarkerCount": 5, + "runtimeQuestionIds": [ + "SRVBLU_MENSINTRO_V1R0", + "SRVBLU_MENSINTRO2_V1R0", + "D_951357171!", + "D_593467240!", + "END" + ], + "responseControlsByType": { + "date": 1, + "radio": 2 + }, + "explicitTransitions": { + "targets": [ + "END" + ], + "byKind": { + "response": 1 + }, + "byResolution": { + "terminal": 1 + }, + "triggerTypes": { + "radio": 1 + }, + "triggerValues": [ + "104430631" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_951357171,104430631)", + "equals(D_951357171,353358909)" + ], + "sitesByScope": { + "inline": 2 + }, + "sitesByAttribute": { + "displayif": 2 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [ + "END" + ], + "counts": { + "authoredMarkerCount": 5, + "processorQuestionCount": 5, + "processedQuestionCount": 5, + "renderedFormCount": 5, + "controlCount": 14, + "responseControlCount": 3, + "explicitTransitionCount": 1, + "sequentialAdjacencyCount": 4, + "resolvedExplicitTransitionCount": 1, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 2, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 2 + } + }, + { + "schemaVersion": 1, + "module": "moduleMenstrual", + "locale": "es", + "language": "es", + "path": "prod/moduleMenstrualSpanish.txt", + "sha256": "6424161524cbfd2ba9884e0db0106f1dcb37132473125de2abeeae9c8ae6cc8f", + "questName": "D_912367929", + "version": "1.1", + "authoredMarkerCount": 5, + "runtimeQuestionIds": [ + "SRVBLU_MENSINTRO_V1R0", + "SRVBLU_MENSINTRO2_V1R0", + "D_951357171!", + "D_593467240!", + "END" + ], + "responseControlsByType": { + "date": 1, + "radio": 2 + }, + "explicitTransitions": { + "targets": [ + "END" + ], + "byKind": { + "response": 1 + }, + "byResolution": { + "terminal": 1 + }, + "triggerTypes": { + "radio": 1 + }, + "triggerValues": [ + "104430631" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_951357171,104430631)", + "equals(D_951357171,353358909)" + ], + "sitesByScope": { + "inline": 2 + }, + "sitesByAttribute": { + "displayif": 2 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [ + "END" + ], + "counts": { + "authoredMarkerCount": 5, + "processorQuestionCount": 5, + "processedQuestionCount": 5, + "renderedFormCount": 5, + "controlCount": 14, + "responseControlCount": 3, + "explicitTransitionCount": 1, + "sequentialAdjacencyCount": 4, + "resolvedExplicitTransitionCount": 1, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 2, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 2 + } + }, + { + "schemaVersion": 1, + "module": "moduleMouthwash", + "locale": "en", + "language": "en", + "path": "prod/moduleMouthwash.txt", + "sha256": "5d352f4bebe7c0a16cb835c24b44c93c7ce00af4a9b5c8a345ce3662036c70fd", + "questName": "D_390351864", + "version": "1.1", + "authoredMarkerCount": 34, + "runtimeQuestionIds": [ + "SRVMTW_MODULEINTRO_V1R0", + "D_667908442!", + "D_350251057?", + "D_877878167?", + "D_800703566?", + "D_294886836?", + "D_642044281?", + "D_479143504?", + "D_498984275?", + "D_205713835?", + "D_353467497?", + "D_429994023?", + "D_499977481?", + "D_406270109?", + "D_349659426?", + "D_766370065?", + "D_520416570?", + "D_921972241?", + "D_526973271?", + "D_460873842?", + "D_430060900?", + "D_800752981?", + "D_899251483_V2?", + "D_724589244?", + "D_957305523?", + "D_360678252?", + "D_542661394?", + "D_339570897?", + "D_983043203?", + "D_736028153?", + "D_792134396?", + "D_736393021?", + "D_318641324?", + "END" + ], + "responseControlsByType": { + "checkbox": 25, + "radio": 134 + }, + "explicitTransitions": { + "targets": [ + "D_350251057", + "END", + "D_498984275", + "D_205713835", + "D_353467497", + "D_429994023", + "D_499977481", + "D_406270109", + "D_349659426", + "D_766370065", + "D_520416570", + "D_921972241", + "D_526973271", + "D_460873842", + "D_430060900", + "D_800752981", + "D_724589244", + "D_957305523", + "D_360678252" + ], + "byKind": { + "no-response": 1, + "response": 21 + }, + "byResolution": { + "exact": 18, + "terminal": 4 + }, + "triggerTypes": { + "checkbox": 17, + "hidden": 1, + "radio": 4 + }, + "triggerValues": [ + "668770150", + "141992510", + "203919683", + "807884576", + "165596977", + "578402172", + "184513726", + "390351864", + "950773275", + "762727133", + "877842367", + "886771318", + "404389800", + "463302301", + "259744087", + "523660949", + "812107266", + "452438775", + "886864375", + "104430631", + "178420302" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_479143504,203919683)", + "equals(D_479143504,807884576)", + "equals(D_479143504,165596977)", + "equals(D_479143504,578402172)", + "equals(D_479143504,184513726)", + "equals(D_479143504,390351864)", + "equals(D_406270109,950773275)", + "equals(D_406270109,762727133)", + "equals(D_406270109,877842367)", + "equals(D_406270109,886771318)", + "equals(D_406270109,404389800)", + "equals(D_406270109,463302301)", + "equals(D_406270109,259744087)", + "equals(D_406270109,523660949)", + "equals(D_899251483_V2,812107266)", + "equals(D_899251483_V2,452438775)", + "equals(D_899251483_V2,886864375)", + "equals(D_667908442,141992510)", + "equals(D_667908442,668770150)" + ], + "sitesByScope": { + "inline": 2, + "question": 17 + }, + "sitesByAttribute": { + "displayif": 19 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [ + "END" + ], + "counts": { + "authoredMarkerCount": 34, + "processorQuestionCount": 34, + "processedQuestionCount": 34, + "renderedFormCount": 34, + "controlCount": 259, + "responseControlCount": 159, + "explicitTransitionCount": 22, + "sequentialAdjacencyCount": 33, + "resolvedExplicitTransitionCount": 22, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 19, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 19 + } + }, + { + "schemaVersion": 1, + "module": "moduleMouthwash", + "locale": "es", + "language": "es", + "path": "prod/moduleMouthwashSpanish.txt", + "sha256": "e7516c4836ad310bc8be26f7c96cb9e1f23ee0bcbc529677e34db332fd76637a", + "questName": "D_390351864", + "version": "1.1", + "authoredMarkerCount": 34, + "runtimeQuestionIds": [ + "SRVMTW_MODULEINTRO_V1R0", + "D_667908442!", + "D_350251057?", + "D_877878167?", + "D_800703566?", + "D_294886836?", + "D_642044281?", + "D_479143504?", + "D_498984275?", + "D_205713835?", + "D_353467497?", + "D_429994023?", + "D_499977481?", + "D_406270109?", + "D_349659426?", + "D_766370065?", + "D_520416570?", + "D_921972241?", + "D_526973271?", + "D_460873842?", + "D_430060900?", + "D_800752981?", + "D_899251483_V2?", + "D_724589244?", + "D_957305523?", + "D_360678252?", + "D_542661394?", + "D_339570897?", + "D_983043203?", + "D_736028153?", + "D_792134396?", + "D_736393021?", + "D_318641324?", + "END" + ], + "responseControlsByType": { + "checkbox": 25, + "radio": 134 + }, + "explicitTransitions": { + "targets": [ + "D_350251057", + "END", + "D_498984275", + "D_205713835", + "D_353467497", + "D_429994023", + "D_499977481", + "D_406270109", + "D_349659426", + "D_766370065", + "D_520416570", + "D_921972241", + "D_526973271", + "D_460873842", + "D_430060900", + "D_800752981", + "D_724589244", + "D_957305523", + "D_360678252" + ], + "byKind": { + "no-response": 1, + "response": 21 + }, + "byResolution": { + "exact": 18, + "terminal": 4 + }, + "triggerTypes": { + "checkbox": 17, + "hidden": 1, + "radio": 4 + }, + "triggerValues": [ + "668770150", + "141992510", + "203919683", + "807884576", + "165596977", + "578402172", + "184513726", + "390351864", + "950773275", + "762727133", + "877842367", + "886771318", + "404389800", + "463302301", + "259744087", + "523660949", + "812107266", + "452438775", + "886864375", + "104430631", + "178420302" + ], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [ + "equals(D_479143504,203919683)", + "equals(D_479143504,807884576)", + "equals(D_479143504,165596977)", + "equals(D_479143504,578402172)", + "equals(D_479143504,184513726)", + "equals(D_479143504,390351864)", + "equals(D_406270109,950773275)", + "equals(D_406270109,762727133)", + "equals(D_406270109,877842367)", + "equals(D_406270109,886771318)", + "equals(D_406270109,404389800)", + "equals(D_406270109,463302301)", + "equals(D_406270109,259744087)", + "equals(D_406270109,523660949)", + "equals(D_899251483_V2,812107266)", + "equals(D_899251483_V2,452438775)", + "equals(D_899251483_V2,886864375)", + "equals(D_667908442,141992510)", + "equals(D_667908442,668770150)" + ], + "sitesByScope": { + "inline": 2, + "question": 17 + }, + "sitesByAttribute": { + "displayif": 19 + } + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [ + "END" + ], + "counts": { + "authoredMarkerCount": 34, + "processorQuestionCount": 34, + "processedQuestionCount": 34, + "renderedFormCount": 34, + "controlCount": 259, + "responseControlCount": 159, + "explicitTransitionCount": 22, + "sequentialAdjacencyCount": 33, + "resolvedExplicitTransitionCount": 22, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 19, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 19 + } + }, + { + "schemaVersion": 1, + "module": "moduleQoL", + "locale": "en", + "language": "en", + "path": "prod/moduleQoL.txt", + "sha256": "6e1e8c3af357783996395be2a6b6907cf02f936c5cb8275717477f3e05c51b7e", + "questName": "D_601305072", + "version": "1.0", + "authoredMarkerCount": 11, + "runtimeQuestionIds": [ + "D_284353934?", + "D_404946076?", + "D_715048033?", + "D_907490539?", + "D_336566965?", + "D_420392309?", + "D_420560514?", + "D_261177801?", + "D_326712049?", + "D_230486322?", + "END" + ], + "responseControlsByType": { + "radio": 200 + }, + "explicitTransitions": { + "targets": [], + "byKind": {}, + "byResolution": {}, + "triggerTypes": {}, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 11, + "processorQuestionCount": 11, + "processedQuestionCount": 11, + "renderedFormCount": 11, + "controlCount": 231, + "responseControlCount": 200, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 10, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + }, + { + "schemaVersion": 1, + "module": "moduleQoL", + "locale": "es", + "language": "es", + "path": "prod/moduleQoLSpanish.txt", + "sha256": "c068aab47cb94768399a635e7e98a48078e29e36391db55987ce33701edbf4a1", + "questName": "D_601305072", + "version": "1.0", + "authoredMarkerCount": 11, + "runtimeQuestionIds": [ + "D_284353934?", + "D_404946076?", + "D_715048033?", + "D_907490539?", + "D_336566965?", + "D_420392309?", + "D_420560514?", + "D_261177801?", + "D_326712049?", + "D_230486322?", + "END" + ], + "responseControlsByType": { + "radio": 200 + }, + "explicitTransitions": { + "targets": [], + "byKind": {}, + "byResolution": {}, + "triggerTypes": {}, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 11, + "processorQuestionCount": 11, + "processedQuestionCount": 11, + "renderedFormCount": 11, + "controlCount": 231, + "responseControlCount": 200, + "explicitTransitionCount": 0, + "sequentialAdjacencyCount": 10, + "resolvedExplicitTransitionCount": 0, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + }, + { + "schemaVersion": 1, + "module": "ssnModule", + "locale": "en", + "language": "en", + "path": "prod/ssnModule.txt", + "sha256": "400e5fb271c1d434c6c397f370b32fced6d16ea2a2f589720ac220ba82bbeb1b", + "questName": "D_166676176", + "version": "1.0", + "authoredMarkerCount": 3, + "runtimeQuestionIds": [ + "SOCIALSECUR1?", + "SOCIALSECUR2?", + "END" + ], + "responseControlsByType": { + "text": 2 + }, + "explicitTransitions": { + "targets": [ + "SOCIALSECUR2", + "END" + ], + "byKind": { + "default": 1, + "no-response": 1 + }, + "byResolution": { + "exact": 1, + "terminal": 1 + }, + "triggerTypes": { + "hidden": 2 + }, + "triggerValues": [], + "conditionalExpressions": [] + }, + "conditions": { + "expressions": [], + "sitesByScope": {}, + "sitesByAttribute": {} + }, + "grids": [], + "loops": [], + "unresolvedTargets": [], + "asyncQuestionIds": [], + "counts": { + "authoredMarkerCount": 3, + "processorQuestionCount": 3, + "processedQuestionCount": 3, + "renderedFormCount": 3, + "controlCount": 11, + "responseControlCount": 2, + "explicitTransitionCount": 2, + "sequentialAdjacencyCount": 2, + "resolvedExplicitTransitionCount": 2, + "unresolvedExplicitTransitionCount": 0, + "conditionSiteCount": 0, + "gridQuestionCount": 0, + "gridRowCount": 0, + "loopStartCount": 0, + "loopDefinitionCount": 0, + "loopExpandedQuestionCount": 0, + "prefixOnlyTargetCount": 0, + "ambiguousPrefixTargetCount": 0, + "uniqueConditionExpressionCount": 0 + } + } + ] +} diff --git a/tests/corpus/structuralCatalog.spec.js b/tests/corpus/structuralCatalog.spec.js new file mode 100644 index 0000000..86ed73b --- /dev/null +++ b/tests/corpus/structuralCatalog.spec.js @@ -0,0 +1,323 @@ +import { existsSync, readFileSync } from 'node:fs'; +import path from 'node:path'; + +import { describe, expect, it, vi } from 'vitest'; + +import { renderFreshQuest } from '../helpers/questRuntime.js'; +import { analyzeQuestionnaireText } from './scripts/lib/corpus.mjs'; +import { + STRUCTURAL_CATALOG_SCHEMA_VERSION, + buildStructuralCatalogRecord, +} from './scripts/lib/structuralCatalog.mjs'; + +const repositoryRoot = path.resolve(import.meta.dirname, '../..'); +const lock = JSON.parse(readFileSync(path.join(import.meta.dirname, 'lock.json'), 'utf8')); +const hostRegistry = JSON.parse(readFileSync(path.join(import.meta.dirname, 'hostPersonas.json'), 'utf8')); +const cacheDirectory = path.join(repositoryRoot, lock.cacheRoot, lock.commit); +const canonicalClock = new Date('2024-07-15T12:00:00.000Z'); +const primaryPersona = hostRegistry.personas.find(({ id }) => id === 'external-branch-primary'); + +const aggregateCountFields = [ + 'authoredMarkerCount', + 'processorQuestionCount', + 'processedQuestionCount', + 'renderedFormCount', + 'controlCount', + 'responseControlCount', + 'explicitTransitionCount', + 'sequentialAdjacencyCount', + 'resolvedExplicitTransitionCount', + 'unresolvedExplicitTransitionCount', + 'conditionSiteCount', + 'gridQuestionCount', + 'gridRowCount', + 'loopStartCount', + 'loopDefinitionCount', + 'loopExpandedQuestionCount', + 'prefixOnlyTargetCount', + 'ambiguousPrefixTargetCount', +]; + +function comparePaths(left, right) { + return left.path < right.path ? -1 : left.path > right.path ? 1 : 0; +} + +function asyncHooksFor(record) { + return Object.values(hostRegistry.asyncHooks) + .filter(({ module }) => module === record.module) + .toSorted((left, right) => left.markupKey.localeCompare(right.markupKey)); +} + +function asyncQuestionMap(hooks) { + return Object.fromEntries(hooks.map((hook) => [ + hook.markupKey, + { func: hook.function, args: hook.args }, + ])); +} + +function normalisedQuestionId(question, index) { + return question.questionIDExactSearch + ?? question.questionID?.replace(/[?!]$/, '') + ?? `__question_${index}`; +} + +function runtimeTargetResolver(processor, errorLog) { + return (target, { questionIndex }) => { + const originalIndex = processor.currentQuestionIndex; + const errorStart = errorLog.length; + + try { + processor.currentQuestionIndex = questionIndex; + const result = processor.findQuestion(target); + const resolverErrors = errorLog.splice(errorStart); + if (!result?.question || result.index < 0 || resolverErrors.length > 0) { + return { resolved: false, kind: resolverErrors.length ? 'oracle-error' : 'missing' }; + } + + const questions = processor.questions; + const exactMatches = questions + .map((question, index) => ({ id: normalisedQuestionId(question, index), index })) + .filter(({ id }) => id === target); + const prefixMatches = questions + .map((question, index) => ({ + id: question.questionID ?? normalisedQuestionId(question, index), + index, + })) + .filter(({ id }) => id.startsWith(target)); + const resolvedId = result.question.id || result.question.getAttribute('id'); + + let kind = 'prefix-only'; + if (target === 'END') kind = 'terminal'; + else if (target.startsWith('_CONTINUE')) kind = 'virtual-loop'; + else if (exactMatches.some(({ index }) => index === result.index)) kind = 'exact'; + else if (prefixMatches.length > 1) kind = 'ambiguous-prefix'; + else if (new RegExp(`^${target.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}_\\d+_\\d+[?!]?$`).test(resolvedId)) { + kind = 'generated-loop'; + } + + return { + resolved: true, + kind, + index: result.index, + questionId: resolvedId, + }; + } catch { + errorLog.splice(errorStart); + return { resolved: false, kind: 'oracle-exception' }; + } finally { + processor.currentQuestionIndex = originalIndex; + } + }; +} + +function addResolutionCounts(survey) { + const prefixOnlyTargetCount = survey.transitions + .filter(({ resolution }) => resolution.kind === 'prefix-only').length; + const ambiguousPrefixTargetCount = survey.transitions + .filter(({ resolution }) => resolution.kind === 'ambiguous-prefix').length; + const uniqueConditionExpressionCount = new Set(survey.conditionSites + .map(({ decodedCondition }) => decodedCondition) + .filter(Boolean)).size; + + return { + ...survey, + counts: { + ...survey.counts, + prefixOnlyTargetCount, + ambiguousPrefixTargetCount, + uniqueConditionExpressionCount, + }, + }; +} + +function responseControlTypes(questionRecords) { + const counts = {}; + for (const { controls } of questionRecords) { + for (const control of controls) { + const type = control.type ?? control.tag; + if (['button', 'hidden', 'reset', 'submit'].includes(type)) continue; + counts[type] = (counts[type] ?? 0) + control.count; + } + } + return Object.fromEntries(Object.entries(counts).toSorted(([left], [right]) => left.localeCompare(right))); +} + +function conditionSummary(conditionSites) { + return { + expressions: [...new Set(conditionSites.map(({ decodedCondition }) => decodedCondition))], + sitesByScope: countValues(conditionSites.map(({ scope }) => scope)), + sitesByAttribute: countValues(conditionSites.map(({ attribute }) => attribute)), + }; +} + +function transitionSummary(transitions) { + return { + targets: [...new Set(transitions.map(({ to }) => to))], + byKind: countValues(transitions.map(({ kind }) => kind)), + byResolution: countValues(transitions.map(({ resolution }) => resolution.kind)), + triggerTypes: countValues(transitions.map(({ control }) => control.type).filter(Boolean)), + triggerValues: [...new Set(transitions.map(({ control }) => control.value).filter(Boolean))], + conditionalExpressions: [...new Set(transitions + .map(({ control }) => control.decodedCondition) + .filter(Boolean))], + }; +} + +function countValues(values) { + const counts = {}; + for (const value of values) counts[value] = (counts[value] ?? 0) + 1; + return Object.fromEntries(Object.entries(counts).toSorted(([left], [right]) => left.localeCompare(right))); +} + +function compactSurvey(survey) { + return { + schemaVersion: survey.schemaVersion, + module: survey.module, + locale: survey.locale, + language: survey.language, + path: survey.path, + sha256: survey.sha256, + questName: survey.questName, + version: survey.version, + authoredMarkerCount: survey.authoredMarkerCount, + runtimeQuestionIds: survey.processedQuestionIds, + responseControlsByType: responseControlTypes(survey.questionRecords), + explicitTransitions: transitionSummary(survey.transitions), + conditions: conditionSummary(survey.conditionSites), + grids: survey.grids, + loops: survey.loops.definitions.map((definition) => ({ + loopIndex: definition.loopIndex, + loopMaxQuestionIds: definition.loopMaxQuestionIds, + iterationCount: definition.iterationCount, + iterationStartIndexes: definition.iterationStartIndexes, + boundaryIndex: definition.boundaryIndex, + })), + unresolvedTargets: survey.unresolvedTargets, + asyncQuestionIds: survey.asyncQuestionIds, + counts: survey.counts, + }; +} + +function sumCounts(surveys) { + return Object.fromEntries(aggregateCountFields.map((field) => [ + field, + surveys.reduce((total, survey) => total + (survey.counts[field] ?? 0), 0), + ])); +} + +function moduleSummaries(surveys) { + return [...Map.groupBy(surveys, ({ module }) => module)] + .map(([module, moduleSurveys]) => ({ + module, + counts: sumCounts(moduleSurveys), + surveys: moduleSurveys.map(({ locale, path: surveyPath, counts }) => ({ + locale, + path: surveyPath, + authoredMarkerCount: counts.authoredMarkerCount, + processorQuestionCount: counts.processorQuestionCount, + gridQuestionCount: counts.gridQuestionCount, + loopDefinitionCount: counts.loopDefinitionCount, + explicitTransitionCount: counts.explicitTransitionCount, + conditionSiteCount: counts.conditionSiteCount, + unresolvedExplicitTransitionCount: counts.unresolvedExplicitTransitionCount, + })), + })) + .toSorted(({ module: left }, { module: right }) => left.localeCompare(right)); +} + +async function buildSurveyCatalog(record) { + const sourcePath = path.join(cacheDirectory, record.path); + expect( + existsSync(sourcePath), + `Locked corpus cache is absent. Run npm run corpus:fetch for ${lock.commit}.`, + ).toBe(true); + + const markdown = readFileSync(sourcePath, 'utf8'); + const sourceAnalysis = analyzeQuestionnaireText(markdown); + const hooks = asyncHooksFor(record); + const previousResults = { + ...primaryPersona.previousResults, + ...primaryPersona.userProfile, + }; + const rendered = await renderFreshQuest({ + markdown, + previousResults, + params: { + activate: false, + asyncQuestionsMap: asyncQuestionMap(hooks), + isRenderer: true, + lang: record.locale, + questVersion: record.version, + showProgressBarInQuest: false, + }, + }); + + expect(rendered.rendered, `${record.path}: transform.render failed in full-list mode`).toBe(true); + expect(rendered.errors, `${record.path}: Quest logged a full-list rendering error`).toEqual([]); + expect(sourceAnalysis.questName).toBe(record.questName); + expect(sourceAnalysis.version).toBe(record.version); + expect(sourceAnalysis.questionIds).toHaveLength(record.sourceQuestionCount); + + const processor = rendered.state.getQuestionProcessor(); + expect(processor.processedQuestions.size, `${record.path}: not every runtime entry was processed`) + .toBe(processor.questions.length); + expect(rendered.root.querySelectorAll('form.question'), `${record.path}: not every runtime entry was appended`) + .toHaveLength(processor.questions.length); + + const survey = buildStructuralCatalogRecord({ + record, + processor, + renderedRoot: rendered.root, + asyncQuestionIds: hooks.map(({ markupKey }) => markupKey), + resolveTarget: runtimeTargetResolver(processor, rendered.errors), + }); + + return compactSurvey(addResolutionCounts({ + ...survey, + sha256: record.sha256, + asyncQuestionIds: hooks.map(({ questionId }) => questionId), + })); +} + +describe('locked production structural catalog', () => { + it('matches every parser-produced form and explicit target', async () => { + expect(primaryPersona, 'The structural catalog requires the primary locked host persona.').toBeTruthy(); + vi.spyOn(console, 'log').mockImplementation(() => {}); + vi.useFakeTimers({ toFake: ['Date'] }); + vi.setSystemTime(canonicalClock); + + const surveys = []; + for (const record of lock.files.toSorted(comparePaths)) { + surveys.push(await buildSurveyCatalog(record)); + } + + const catalog = { + schemaVersion: STRUCTURAL_CATALOG_SCHEMA_VERSION, + corpus: { + repository: lock.repository, + commit: lock.commit, + environment: lock.environment, + fileCount: lock.files.length, + moduleCount: lock.expectedModuleCount, + }, + oracle: { + boundary: 'transform.render with isRenderer=true and activate=false', + hostPersona: primaryPersona.id, + fixedDate: canonicalClock.toISOString(), + sequentialAdjacency: 'Adjacent runtimeQuestionIds; path feasibility is intentionally not inferred.', + }, + counts: sumCounts(surveys), + modules: moduleSummaries(surveys), + surveys, + }; + + expect(catalog.surveys).toHaveLength(29); + expect(catalog.counts.processorQuestionCount).toBe(catalog.counts.processedQuestionCount); + expect(catalog.counts.processorQuestionCount).toBe(catalog.counts.renderedFormCount); + expect(catalog.counts.unresolvedExplicitTransitionCount).toBe(0); + expect(catalog.counts.prefixOnlyTargetCount).toBe(0); + expect(catalog.counts.ambiguousPrefixTargetCount).toBe(0); + await expect(`${JSON.stringify(catalog, null, 2)}\n`) + .toMatchFileSnapshot('./structuralCatalog.json'); + }, 180_000); +}); diff --git a/tests/e2e/accessibility.spec.js b/tests/e2e/accessibility.spec.js new file mode 100644 index 0000000..8e9b6df --- /dev/null +++ b/tests/e2e/accessibility.spec.js @@ -0,0 +1,350 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goBack, + goNext, + openParticipant, + selectLabeledResponse, + waitInHarness, +} from './support/harness.js'; +import { analyzeQuestAxe, unwaivedAxeFindings } from './support/axe.js'; +import { axeDefects } from '../knownDefects/registry.js'; + +const ACCESSIBILITY_PROJECTS = new Set([ + 'chromium-desktop', + 'firefox-desktop', + 'webkit-desktop', + 'chromium-windows-ua', +]); + +const AXE_PROJECTS = new Set([ + ...ACCESSIBILITY_PROJECTS, + 'chromium-phone', + 'chromium-tablet', +]); + +const CURRENT_AXE_BASELINE = [ + axeDefects.progressbarName, + axeDefects.progressbarValue, +]; + +const GRID_AXE_BASELINE = [ + ...CURRENT_AXE_BASELINE, + axeDefects.emptyGridHeader, +]; + +const VALIDATION_AXE_BASELINE = [ + ...CURRENT_AXE_BASELINE, + axeDefects.validationContrast, + axeDefects.validationLabel, +]; + +async function expectNoUnwaivedAxeViolations(page, accepted = CURRENT_AXE_BASELINE) { + const findings = await analyzeQuestAxe(page); + expect(unwaivedAxeFindings(findings, accepted)).toEqual([]); +} + +async function expectModalFocusCycle(page, modal, firstFocusable, lastFocusable) { + await lastFocusable.focus(); + await expect(lastFocusable).toBeFocused(); + await page.keyboard.press('Tab'); + expect(await modal.evaluate((element) => element.contains(document.activeElement))).toBe(true); + await expect(firstFocusable).toBeFocused(); + + await page.keyboard.press('Shift+Tab'); + expect(await modal.evaluate((element) => element.contains(document.activeElement))).toBe(true); + await expect(lastFocusable).toBeFocused(); +} + +async function traverseHostBoundary(page, key, terminalId, maximumPresses = 20) { + const path = []; + for (let press = 0; press < maximumPresses; press += 1) { + await page.keyboard.press(key); + const focused = await page.evaluate(() => { + const element = document.activeElement; + return { + id: element?.id || null, + inQuest: Boolean(element?.closest?.('#questionnaireRoot')), + responseTabStop: element?.classList?.contains('response') ?? false, + screenReaderFocus: Boolean(element?.classList?.contains('screen-reader-focus')), + clickType: element?.dataset?.clickType || null, + }; + }); + path.push(focused); + if (focused.id === terminalId) return path; + } + throw new Error(`Focus did not reach #${terminalId} after ${maximumPresses} ${key} presses: ${JSON.stringify(path)}`); +} + +test.describe('participant accessibility contract @canonical @windows-a11y', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !ACCESSIBILITY_PROJECTS.has(testInfo.project.name), + 'The semantic contract runs in each desktop engine and the Windows user-agent branch.', + ); + }); + + test('groups the prompt in a legend and exposes named survey actions', async ({ page }) => { + await openParticipant(page); + + const question = activeQuestion(page, 'CHOICE'); + await expect(question.locator('fieldset')).toHaveCount(1); + await expect(question.locator('legend')).toHaveText('Which color do you prefer?'); + await expect(question.getByRole('button', { name: 'Next question' })).toBeVisible(); + await expect(question.getByRole('button', { name: 'Reset this answer' })).toBeVisible(); + + const liveRegion = page.locator('#ariaLiveSelectionAnnouncer'); + await expect(liveRegion).toHaveAttribute('aria-live', 'polite'); + await selectLabeledResponse(page, 'Blue'); + await expect(liveRegion).toHaveText('Blue Selected.'); + + const accessibilitySnapshot = await question.ariaSnapshot(); + expect(accessibilitySnapshot).toContain('Which color do you prefer?'); + expect(accessibilitySnapshot).toContain('Next question'); + await expectHealthyHarness(page); + }); + + test('keeps the deliberate action-button tab order on a later question', async ({ page }, testInfo) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + + const question = activeQuestion(page, 'DETAIL'); + const domOrder = await question.locator('button').evaluateAll((buttons) => ( + buttons.map((button) => button.dataset.clickType) + )); + expect(domOrder).toEqual(['next', 'reset', 'previous']); + + // Playwright WebKit follows Safari's macOS default where Tab may omit + // buttons unless Full Keyboard Access is enabled at the OS level. That + // setting is covered in the manual matrix. Test the DOM contract here. + if (testInfo.project.name === 'webkit-desktop') { + await expectHealthyHarness(page); + return; + } + + await expect(question.locator('.screen-reader-focus')).toBeFocused(); + const input = question.locator('#detail'); + await input.focus(); + await page.keyboard.press('Tab'); + await expect(question.getByRole('button', { name: 'Next question' })).toBeFocused(); + await page.keyboard.press('Tab'); + await expect(question.getByRole('button', { name: 'Reset this answer' })).toBeFocused(); + await page.keyboard.press('Tab'); + await expect(question.getByRole('button', { name: 'Back to the previous question' })).toBeFocused(); + await page.keyboard.press('Shift+Tab'); + await expect(question.getByRole('button', { name: 'Reset this answer' })).toBeFocused(); + await page.keyboard.press('Shift+Tab'); + await expect(question.getByRole('button', { name: 'Next question' })).toBeFocused(); + await page.keyboard.press('Shift+Tab'); + await expect(input).toBeFocused(); + await expectHealthyHarness(page); + }); + + test('moves focus into the new question after Next and Back', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + + await expect(activeQuestion(page, 'DETAIL').locator('.screen-reader-focus')).toBeFocused(); + await goBack(page); + await expect(activeQuestion(page, 'PATH').locator('.screen-reader-focus')).toBeFocused(); + await expect(activeQuestion(page, 'PATH').locator('#PATH_1')).toBeChecked(); + await expectHealthyHarness(page); + }); + + test('keeps a generated scalar label associated with its input', async ({ page }) => { + await openParticipant(page, { + markdown: `{"name":"TEST_SCALAR_LABEL"} + +[SCALAR?] At what time should we call? +|time|id=scalar_time| + +[END,end] Complete.`, + }); + + const question = activeQuestion(page, 'SCALAR'); + const label = question.locator('label[for="scalar_time"]'); + const input = question.locator('#scalar_time'); + await expect(label).toHaveText('Enter Time'); + await expect(input).toHaveAccessibleName('Enter Time'); + expect(await input.evaluate((element) => ( + [...element.labels].map((candidate) => candidate.getAttribute('for')) + ))).toEqual(['scalar_time']); + await expectHealthyHarness(page); + }); + + test('crosses both host and Quest focus boundaries with Tab and reverse Shift+Tab', async ({ page }, testInfo) => { + await openParticipant(page); + await waitInHarness(page, 550); + + if (testInfo.project.name === 'webkit-desktop') { + // Playwright WebKit follows Safari's macOS default that omits buttons + // from Tab navigation unless Full Keyboard Access is enabled. Assert the + // complete DOM boundary here. The native traversal is in the manual + // Safari + VoiceOver protocol and is not simulated with programmatic focus. + expect(await page.evaluate(() => { + const before = document.querySelector('#host-before'); + const quest = document.querySelector('#questionnaireRoot'); + const after = document.querySelector('#host-after'); + const beforePrecedesQuest = Boolean( + before.compareDocumentPosition(quest) & Node.DOCUMENT_POSITION_FOLLOWING, + ); + const questPrecedesAfter = Boolean( + quest.compareDocumentPosition(after) & Node.DOCUMENT_POSITION_FOLLOWING, + ); + return beforePrecedesQuest && questPrecedesAfter; + })).toBe(true); + await expectHealthyHarness(page); + return; + } + + await page.locator('#host-before').focus(); + const forward = await traverseHostBoundary(page, 'Tab', 'host-after'); + expect(forward.slice(0, -1).every((entry) => entry.inQuest)).toBe(true); + expect(forward.some((entry) => entry.screenReaderFocus)).toBe(true); + expect(forward.some((entry) => entry.clickType === 'next')).toBe(true); + expect(forward.some((entry) => entry.clickType === 'reset')).toBe(true); + if (testInfo.project.name === 'chromium-windows-ua') { + expect(forward.some((entry) => entry.responseTabStop)).toBe(true); + } + + await page.locator('#host-after').focus(); + const reverse = await traverseHostBoundary(page, 'Shift+Tab', 'host-before'); + expect(reverse.slice(0, -1).every((entry) => entry.inQuest)).toBe(true); + expect(reverse.some((entry) => entry.screenReaderFocus)).toBe(true); + expect(reverse.some((entry) => entry.clickType === 'next')).toBe(true); + expect(reverse.some((entry) => entry.clickType === 'reset')).toBe(true); + await expectHealthyHarness(page); + }); + + test('names the soft-response dialog and restores question focus when it closes', async ({ page }, testInfo) => { + await openParticipant(page); + // Let the initial question's delayed focus handoff complete before this + // test isolates the Bootstrap modal focus trap. The competing-timer case + // is characterized separately in the known-defect lane. + await expect(activeQuestion(page, 'CHOICE').locator('.screen-reader-focus')).toBeFocused(); + await goNext(page); + + const modal = page.locator('#softModal'); + const dialog = page.getByRole('dialog', { name: 'Response requested' }); + await expect(modal).toHaveClass(/show/); + await expect(page.locator('#softModalTitle')).toBeFocused(); + await waitInHarness(page, 400); + if (testInfo.project.name === 'webkit-desktop') { + // Safari's button-tabbing preference also affects modal controls. Keep + // their stable DOM contract automated and exercise the native cycle in + // the Full Keyboard Access manual matrix. + expect(await modal.locator('button, [tabindex="0"]').evaluateAll((elements) => ( + elements.map((element) => element.id || element.getAttribute('aria-label')) + ))).toEqual(['Close', 'modalBodyText', 'modalContinueButton', 'modalCloseButton']); + } else { + await expectModalFocusCycle( + page, + modal, + dialog.getByRole('button', { name: 'Close' }), + dialog.getByRole('button', { name: 'Answer the Question' }), + ); + } + await dialog.getByRole('button', { name: 'Close' }).click(); + await waitInHarness(page, 700); + + await expect(modal).not.toHaveClass(/show/); + await expect(activeQuestion(page, 'CHOICE').locator('.screen-reader-focus')).toBeFocused(); + await expectHealthyHarness(page); + }); + + test('names the submit dialog, focuses its title, and closes it with Escape', async ({ page }, testInfo) => { + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('2'); + await goNext(page); + // Let Quest's scheduled question-focus handoff finish before isolating the + // Bootstrap modal focus trap. Otherwise, the independent timers can race + // under a parallel browser run. + await waitInHarness(page, 550); + + const trigger = activeQuestion(page, 'END').getByRole('button', { name: 'Submit your survey' }); + await trigger.click(); + const dialog = page.getByRole('dialog', { name: 'Submit Answers' }); + await expect(dialog).toBeVisible(); + await expect(page.locator('#submitModalTitle')).toBeFocused(); + await waitInHarness(page, 400); + const modal = page.locator('#submitModal'); + if (testInfo.project.name === 'webkit-desktop') { + expect(await modal.locator('button, [tabindex="0"]').evaluateAll((elements) => ( + elements.map((element) => element.id || element.getAttribute('aria-label')) + ))).toEqual(['Close', 'submitModalBodyText', 'submitModalButton', 'cancelModalButton']); + } else { + await expectModalFocusCycle( + page, + modal, + dialog.getByRole('button', { name: 'Close' }), + dialog.getByRole('button', { name: 'Cancel' }), + ); + } + await page.keyboard.press('Escape'); + await waitInHarness(page, 700); + + await expect(page.locator('#submitModal')).not.toHaveClass(/show/); + await expectHealthyHarness(page); + }); +}); + +test.describe('automated accessibility scan @axe', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !AXE_PROJECTS.has(testInfo.project.name), + 'The Axe baseline runs in every desktop, responsive, and Windows-user-agent project.', + ); + }); + + test('has no unwaived findings in a normal participant question', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + await expectNoUnwaivedAxeViolations(page); + await expectHealthyHarness(page); + }); + + test('has no unwaived findings in an active response grid', async ({ page }) => { + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + await expect(activeQuestion(page, 'GRID_RATE')).toBeVisible(); + await expectNoUnwaivedAxeViolations(page, GRID_AXE_BASELINE); + await expectHealthyHarness(page); + }); + + test('has no unwaived findings while range validation is visible', async ({ page }) => { + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('9'); + await goNext(page); + await expect(activeQuestion(page).locator('.validation-container')).toBeVisible(); + await expectNoUnwaivedAxeViolations(page, VALIDATION_AXE_BASELINE); + await expectHealthyHarness(page); + }); + + test('has no unwaived findings while the response dialog is open', async ({ page }) => { + await openParticipant(page); + await goNext(page); + await expect(page.locator('#softModal')).toHaveClass(/show/); + // Sample after Bootstrap's transition settles so WebKit does not alternate + // between transient focus styles and the stable modal state. + await waitInHarness(page, 400); + await expectNoUnwaivedAxeViolations(page); + await expectHealthyHarness(page); + }); + + test('has no unwaived findings while the submit dialog is open', async ({ page }) => { + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('2'); + await goNext(page); + await activeQuestion(page, 'END').getByRole('button', { name: 'Submit your survey' }).click(); + await expect(page.getByRole('dialog', { name: 'Submit Answers' })).toBeVisible(); + // Let Bootstrap finish transferring focus off the trigger. Axe/WebKit can + // otherwise sample the transient focused-button color during the same task. + await waitInHarness(page, 400); + await expectNoUnwaivedAxeViolations(page); + await expectHealthyHarness(page); + }); +}); diff --git a/tests/e2e/accessibilityLifecycleKnownDefects.spec.js b/tests/e2e/accessibilityLifecycleKnownDefects.spec.js new file mode 100644 index 0000000..8bea12c --- /dev/null +++ b/tests/e2e/accessibilityLifecycleKnownDefects.spec.js @@ -0,0 +1,147 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + harnessSnapshot, + openParticipant, + waitInHarness, +} from './support/harness.js'; +import { analyzeQuestAxe } from './support/axe.js'; +import { accessibilityDefects, axeDefects, runtimeDefects } from '../knownDefects/registry.js'; + +const NATIVE_KEYBOARD_PROJECTS = new Set([ + 'chromium-desktop', + 'firefox-desktop', + 'webkit-desktop', + 'chromium-windows-ua', +]); + +// Module 1 contains production |___| textareas. Keep this minimal two-line +// reproduction independent of a long survey path so it isolates #1587's +// delegated ArrowUp/ArrowDown behavior. +const TEXTAREA_KEYBOARD_MARKDOWN = `{"name":"TEST_TEXTAREA_KEYBOARD"} + +[NOTES?] Please enter two short notes. +|___|notes| + +[END,end] Complete.`; + +async function openPlainTextarea(page) { + await openParticipant(page, { markdown: TEXTAREA_KEYBOARD_MARKDOWN }); + const textarea = activeQuestion(page, 'NOTES').locator('#notes'); + await textarea.fill('first\nsecond'); + return textarea; +} + +async function selectionState(textarea) { + return textarea.evaluate((element) => ({ + focused: document.activeElement === element, + start: element.selectionStart, + end: element.selectionEnd, + })); +} + +test.describe('accessibility event lifecycle regressions @known-defect', () => { + test('#1587 leaves ArrowDown to a plain native textarea', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_PROJECTS.has(testInfo.project.name), 'The native textarea contract runs in each desktop engine and the Windows user-agent branch.'); + + const textarea = await openPlainTextarea(page); + await textarea.focus(); + await textarea.evaluate((element) => element.setSelectionRange(0, 0)); + await expect(textarea).toBeFocused(); + await page.keyboard.press('ArrowDown'); + await waitInHarness(page, 25); + + const state = await selectionState(textarea); + test.fail(true, `${accessibilityDefects[1587].issue}: ArrowDown must retain native multiline caret behavior instead of moving Quest focus.`); + expect(state.focused).toBe(true); + expect(state.start).toBeGreaterThan(0); + expect(state.end).toBe(state.start); + }); + + test('#1587 leaves ArrowUp to a plain native textarea', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_PROJECTS.has(testInfo.project.name), 'The native textarea contract runs in each desktop engine and the Windows user-agent branch.'); + + const textarea = await openPlainTextarea(page); + await textarea.focus(); + await textarea.evaluate((element) => element.setSelectionRange(6, 6)); + await expect(textarea).toBeFocused(); + await page.keyboard.press('ArrowUp'); + await waitInHarness(page, 25); + + const state = await selectionState(textarea); + test.fail(true, `${accessibilityDefects[1587].issue}: ArrowUp must retain native multiline caret behavior instead of moving Quest focus.`); + expect(state.focused).toBe(true); + expect(state.start).toBe(0); + expect(state.end).toBe(0); + }); + + test('clears a delayed list-selection announcement when advancing immediately', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The asynchronous announcement race is characterized once in Chromium.'); + const defect = runtimeDefects.staleSelectionAnnouncement; + + await openParticipant(page); + await activeQuestion(page, 'CHOICE').locator('label', { hasText: 'Blue' }).click(); + await activeQuestion(page, 'CHOICE').getByRole('button', { name: 'Next question' }).click(); + await expect(activeQuestion(page, 'CHECKS')).toBeVisible(); + await waitInHarness(page, 150); + + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + await expect(page.locator('#ariaLiveSelectionAnnouncer')).toHaveText('', { timeout: 1_000 }); + }); + + test('clears a delayed list-selection announcement when returning immediately', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The asynchronous announcement race is characterized once in Chromium.'); + const defect = runtimeDefects.staleSelectionAnnouncement; + + await openParticipant(page); + await activeQuestion(page, 'CHOICE').locator('label', { hasText: 'Blue' }).click(); + await waitInHarness(page, 150); + await activeQuestion(page, 'CHOICE').getByRole('button', { name: 'Next question' }).click(); + await expect(activeQuestion(page, 'CHECKS')).toBeVisible(); + await activeQuestion(page, 'CHECKS').locator('label', { hasText: 'Email' }).click(); + await activeQuestion(page, 'CHECKS').getByRole('button', { name: 'Back to the previous question' }).click(); + await expect(activeQuestion(page, 'CHOICE')).toBeVisible(); + await waitInHarness(page, 150); + + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + await expect(page.locator('#ariaLiveSelectionAnnouncer')).toHaveText('', { timeout: 1_000 }); + }); + + test('does not move the Windows grid focus helper back into an inactive grid after immediate Next', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-windows-ua', 'The shared grid focus helper is only used through Quest’s Windows accessibility branch.'); + const defect = runtimeDefects.gridDeferredFocusAfterNavigation; + + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await activeQuestion(page, 'GRID_LEAD').getByRole('button', { name: 'Next question' }).click(); + await expect(activeQuestion(page, 'GRID_RATE')).toBeVisible(); + + await page.evaluate(() => { + document.querySelector('#GRID_WALK_1').click(); + document.querySelector('#GRID_CYCLE_2').click(); + document.querySelector('#GRID_RATE button.next').click(); + }); + await expect(activeQuestion(page, 'END')).toBeVisible(); + await waitInHarness(page, 200); + const inactiveHelperCount = await page.locator('#GRID_RATE #srFocusHelper').count(); + const errors = (await harnessSnapshot(page)).logs.errors; + + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + expect(inactiveHelperCount).toBe(0); + expect(errors).toEqual([]); + }); + + test('production-shaped image markup supplies a text alternative and has no image-alt violation', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The image-alt defect is characterized once in Chromium.'); + const defect = axeDefects.imageAlt; + + await openParticipant(page, { fixture: 'imageAlt.txt' }); + const image = activeQuestion(page, 'PLAIN').locator('img'); + await expect(image).toHaveAttribute('src', /FemaleBaldness1\.png$/); + const alt = await image.getAttribute('alt'); + const imageAltFindings = (await analyzeQuestAxe(page)).filter((finding) => finding.id === defect.ruleId); + + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + expect(alt).toMatch(/\S/); + expect(imageAltFindings).toEqual([]); + }); +}); diff --git a/tests/e2e/assets/FemaleBaldness1.png b/tests/e2e/assets/FemaleBaldness1.png new file mode 100644 index 0000000..641f0c6 Binary files /dev/null and b/tests/e2e/assets/FemaleBaldness1.png differ diff --git a/tests/e2e/assets/fonts.lock.json b/tests/e2e/assets/fonts.lock.json new file mode 100644 index 0000000..95aeb82 --- /dev/null +++ b/tests/e2e/assets/fonts.lock.json @@ -0,0 +1,21 @@ +{ + "schemaVersion": 1, + "assets": [ + { + "family": "Libre Baskerville", + "style": "normal", + "weight": 400, + "version": "v24", + "stylesheetUrl": "https://fonts.googleapis.com/css2?family=Libre+Baskerville&display=swap", + "url": "https://fonts.gstatic.com/s/librebaskerville/v24/kmKUZrc3Hgbbcjq75U4uslyuy4kn0olVQ-LglH6T17uj8Q4SCQ.ttf", + "path": "fonts/libre-baskerville-latin-400-v24.ttf", + "mimeType": "font/ttf", + "sha256": "f5bc4341f15de5e877d8d95b6b14b33e9a3da1f8fef4ed0700ed407f096cffb6", + "bytes": 106728, + "license": "SIL Open Font License 1.1", + "licensePath": "fonts/OFL-Libre-Baskerville.txt", + "licenseSha256": "516bf7fbfdbd0f0e4f50ade6a9127ad83ac7a54370bad6cf70794554569e9c4e", + "upstream": "https://github.com/google/fonts/tree/main/ofl/librebaskerville" + } + ] +} diff --git a/tests/e2e/assets/fonts/OFL-Libre-Baskerville.txt b/tests/e2e/assets/fonts/OFL-Libre-Baskerville.txt new file mode 100644 index 0000000..5804419 --- /dev/null +++ b/tests/e2e/assets/fonts/OFL-Libre-Baskerville.txt @@ -0,0 +1,93 @@ +Copyright 2012 The Libre Baskerville Project Authors (https://github.com/impallari/Libre-Baskerville) with Reserved Font Name Libre Baskerville. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/tests/e2e/assets/fonts/libre-baskerville-latin-400-v24.ttf b/tests/e2e/assets/fonts/libre-baskerville-latin-400-v24.ttf new file mode 100644 index 0000000..c41e10f Binary files /dev/null and b/tests/e2e/assets/fonts/libre-baskerville-latin-400-v24.ttf differ diff --git a/tests/e2e/authoring.spec.js b/tests/e2e/authoring.spec.js new file mode 100644 index 0000000..819df0e --- /dev/null +++ b/tests/e2e/authoring.spec.js @@ -0,0 +1,566 @@ +import { + test, + expect, + expectAndClearConsoleErrors, + expectAndClearConsoleWarnings, +} from './support/test.js'; +import { readCanonicalFixture } from './support/harness.js'; +import { + AUTHORING_BOOTSTRAP_CSS_URL, + AUTHORING_BOOTSTRAP_JS_URL, + DEMO_MODULE_URL, + GITHUB_BLOB_MODULE_URL, + GITHUB_RAW_MODULE_URL, + GITHUB_WEB_RAW_MODULE_URL, + HTTP_ERROR_MODULE_URL, + LIBRE_BASKERVILLE_FONT_URL, + LIBRE_BASKERVILLE_STYLESHEET_URL, + REJECTED_MODULE_URL, + TEST_MODULE_URL, + closeAuthoringSettings, + installAuthoringRoutes, + openAuthoringSettings, + renderAuthoringMarkdown, + waitForAuthoringReady, +} from './support/authoring.js'; + +const DESKTOP_ENGINES = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); +const CONDITIONAL_MARKDOWN = ` + {"name":"PREVIOUS_RESULTS_AUTHORING"} + [START] Begin the conditional test. + [HIDDEN,displayif=equals(EXTERNAL_FLAG,0)] Prior data did not match. + [VISIBLE,displayif=equals(EXTERNAL_FLAG,1)] Prior data matched. + [END] Done. +`; + +async function readQuestParamsIndexedDb(page) { + return page.evaluate(async () => { + const supportsDatabaseEnumeration = typeof indexedDB.databases === 'function'; + const databases = supportsDatabaseEnumeration ? await indexedDB.databases() : []; + const questDatabase = databases.find((database) => database.name === 'questParams'); + if (!questDatabase) { + return { + supportsDatabaseEnumeration, + databases, + objectStores: [], + records: {}, + }; + } + + const database = await new Promise((resolve, reject) => { + const request = indexedDB.open('questParams'); + request.onerror = () => reject(request.error); + request.onsuccess = () => resolve(request.result); + }); + const objectStores = [...database.objectStoreNames]; + const keys = ['logic', 'styling', 'previousResults']; + const transaction = database.transaction('params', 'readonly'); + const store = transaction.objectStore('params'); + const values = await Promise.all(keys.map((key) => new Promise((resolve, reject) => { + const request = store.get(key); + request.onerror = () => reject(request.error); + request.onsuccess = () => resolve(request.result); + }))); + database.close(); + + return { + supportsDatabaseEnumeration, + databases, + objectStores, + records: Object.fromEntries(keys.map((key, index) => [key, values[index]])), + }; + }); +} + +test.describe('checked-in authoring application @authoring', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !DESKTOP_ENGINES.has(testInfo.project.name), + 'The authoring suite runs in each desktop browser engine.', + ); + }); + + test('renders a complete module and switches to participant-style active logic @cross-browser-authoring', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + await renderAuthoringMarkdown(page, readCanonicalFixture('runtimeControls.txt')); + + await expect(page.locator('#rendering form.question')).toHaveCount(8); + await expect(page.locator('#rendering form.question:visible')).toHaveCount(8); + await expect(page.locator('#pagestyle')).toHaveAttribute('href', 'Default.css'); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'Default.css'); + + await openAuthoringSettings(page); + await page.getByRole('switch', { name: 'Activate Logic' }).check(); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'ActiveLogic.css'); + await expect(page.locator('#rendering form.question')).toHaveCount(1); + await expect(page.locator('#rendering form.question.active')).toHaveCount(1); + + await page.getByRole('switch', { name: 'Use Styling' }).check(); + await expect(page.locator('#pagestyle')).toHaveAttribute('href', 'Style1.css'); + await expect(page.locator('#rendering form.question.active')).toHaveCount(1); + }); + + test('loads previous results before rendering and applies them to authored conditions', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + await openAuthoringSettings(page); + await page.getByRole('textbox', { name: 'json input' }).fill('{"EXTERNAL_FLAG":"1"}'); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + await expect(page.locator('#loadDisplay')).toHaveText('Added JSON successfully.'); + await page.getByRole('switch', { name: 'Activate Logic' }).check(); + await closeAuthoringSettings(page); + + await renderAuthoringMarkdown(page, CONDITIONAL_MARKDOWN); + await expect(page.locator('#rendering #START.active')).toBeVisible(); + await page.locator('#rendering #START button.next').click(); + await expect(page.locator('#rendering #VISIBLE.active')).toBeVisible(); + await expect(page.locator('#rendering #HIDDEN')).toHaveCount(0); + }); + + test('loads a module through the Settings URL control and preserves it as a hash', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('navigationState.txt'); + await installAuthoringRoutes(page, diagnostics, { + modules: { [TEST_MODULE_URL]: markdown }, + }); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + await openAuthoringSettings(page); + + await page.getByRole('textbox', { name: 'url', exact: true }).fill(TEST_MODULE_URL); + await Promise.all([ + page.waitForNavigation({ waitUntil: 'load' }), + page.getByRole('button', { name: 'Load URL' }).click(), + ]); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + await expect(page.locator('#rendering form.question')).toHaveCount(4); + expect(diagnostics.fulfilledExternalRequests).toContain(TEST_MODULE_URL); + expect(decodeURIComponent(new URL(page.url()).hash)).toBe(`#${TEST_MODULE_URL}`); + }); + + test('honors query run/style/url parameters without exposing the authoring chrome', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('navigationState.txt'); + await installAuthoringRoutes(page, diagnostics, { + modules: { [TEST_MODULE_URL]: markdown }, + }); + const query = new URLSearchParams({ + url: TEST_MODULE_URL, + run: '', + style: 'Style1.css', + }); + + await page.goto(`/index.html?${query}`); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + await expect(page.locator('#logic')).toBeChecked(); + await expect(page.locator('#questNavbar')).toBeHidden(); + await expect(page.locator('#markup')).toBeHidden(); + await expect(page.locator('#renderText')).toBeHidden(); + await expect(page.locator('#rendering').locator('form.question.active')).toHaveCount(1); + await expect(page.locator('#rendering').locator('..')).not.toHaveClass(/col-md-6/); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'Style1.css'); + }); + + test('honors structured hash run/style parameters alongside a query module URL', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('navigationState.txt'); + await installAuthoringRoutes(page, diagnostics, { + modules: { [TEST_MODULE_URL]: markdown }, + }); + + await page.goto( + `/index.html?url=${encodeURIComponent(TEST_MODULE_URL)}#run&style=Style1.css`, + ); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + await expect(page.locator('#logic')).toBeChecked(); + await expect(page.locator('#questNavbar')).toBeHidden(); + await expect(page.locator('#markup')).toBeHidden(); + await expect(page.locator('#renderText')).toBeHidden(); + await expect(page.locator('#rendering form.question.active')).toHaveCount(1); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'Style1.css'); + }); + + test('makes non-control query parameters available as previous results', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics, { + modules: { [TEST_MODULE_URL]: CONDITIONAL_MARKDOWN }, + }); + const query = new URLSearchParams({ + url: TEST_MODULE_URL, + run: '', + style: 'Style1.css', + config: 'host-only', + EXTERNAL_FLAG: '1', + }); + + await page.goto(`/index.html?${query}`); + await waitForAuthoringReady(page); + await expect(page.locator('#rendering #START.active')).toBeVisible(); + await page.locator('#rendering #START button.next').click(); + + await expect(page.locator('#rendering #VISIBLE.active')).toBeVisible(); + await expect(page.locator('#rendering #HIDDEN')).toHaveCount(0); + await expect(page.locator('#jsonInput')).toHaveValue(''); + }); + + test('loads Demo through URL state and clears that state after a manual edit', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('validation.txt'); + await installAuthoringRoutes(page, diagnostics, { demoMarkdown: markdown }); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + await Promise.all([ + page.waitForNavigation({ waitUntil: 'load' }), + page.getByRole('link', { name: 'Demo' }).click(), + ]); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + expect(decodeURIComponent(new URL(page.url()).hash)).toBe(`#${DEMO_MODULE_URL}`); + expect(new URL(page.url()).search).toBe(''); + + const textarea = page.locator('#markupTextArea'); + await textarea.fill(`${markdown}\n[MANUAL_NOTE] Locally edited.`); + await textarea.blur(); + + await expect.poll(() => new URL(page.url()).hash).toBe(''); + expect(new URL(page.url()).search).toBe(''); + expect(new URL(page.url()).pathname).toMatch(/\/index\.html$/); + }); + + test('serves the locked Libre Baskerville authoring font without network access', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + const loaded = await page.evaluate(async () => { + await document.fonts.load('16px "Libre Baskerville"'); + return { + ready: document.fonts.check('16px "Libre Baskerville"'), + family: getComputedStyle(document.querySelector('.text-baskerville')).fontFamily, + }; + }); + + expect(loaded.ready).toBe(true); + expect(loaded.family).toContain('Libre Baskerville'); + expect(diagnostics.fulfilledExternalRequests).toContain(LIBRE_BASKERVILLE_STYLESHEET_URL); + expect(diagnostics.fulfilledExternalRequests).toContain(LIBRE_BASKERVILLE_FONT_URL); + }); + + test('preserves the checked-in Bootstrap SRI contract while serving exact local assets', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + const stylesheet = page.locator(`link[href="${AUTHORING_BOOTSTRAP_CSS_URL}"]`); + const script = page.locator(`script[src="${AUTHORING_BOOTSTRAP_JS_URL}"]`); + await expect(stylesheet).toHaveAttribute( + 'integrity', + 'sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN', + ); + await expect(script).toHaveAttribute( + 'integrity', + 'sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL', + ); + await expect(stylesheet).toHaveAttribute('crossorigin', 'anonymous'); + await expect(script).toHaveAttribute('crossorigin', 'anonymous'); + expect(await page.evaluate(() => typeof globalThis.bootstrap?.Modal)).toBe('function'); + expect(diagnostics.fulfilledExternalRequests).toEqual(expect.arrayContaining([ + AUTHORING_BOOTSTRAP_CSS_URL, + AUTHORING_BOOTSTRAP_JS_URL, + ])); + }); + + test('loads a module supplied as the legacy bare hash parameter', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('validation.txt'); + await installAuthoringRoutes(page, diagnostics, { demoMarkdown: markdown }); + + await page.goto(`/index.html#${encodeURIComponent(DEMO_MODULE_URL)}`); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + await expect(page.locator('#rendering form.question')).toHaveCount(2); + expect(diagnostics.fulfilledExternalRequests).toContain(DEMO_MODULE_URL); + }); + + test('normalizes GitHub blob/raw paths and leaves raw-host URLs unchanged', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('validation.txt'); + await installAuthoringRoutes(page, diagnostics, { + modules: { [GITHUB_RAW_MODULE_URL]: markdown }, + }); + + await page.goto(`/index.html?url=${encodeURIComponent(GITHUB_BLOB_MODULE_URL)}`); + await waitForAuthoringReady(page); + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + + await page.goto(`/index.html?url=${encodeURIComponent(GITHUB_WEB_RAW_MODULE_URL)}`); + await waitForAuthoringReady(page); + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + + await page.goto(`/index.html?url=${encodeURIComponent(GITHUB_RAW_MODULE_URL)}`); + await waitForAuthoringReady(page); + await expect(page.locator('#markupTextArea')).toHaveValue(markdown); + + expect( + diagnostics.fulfilledExternalRequests.filter((url) => url === GITHUB_RAW_MODULE_URL), + ).toHaveLength(3); + expect(diagnostics.fulfilledExternalRequests).not.toContain(GITHUB_BLOB_MODULE_URL); + expect(diagnostics.fulfilledExternalRequests).not.toContain(GITHUB_WEB_RAW_MODULE_URL); + }); + + test('renders a deterministic error document for a non-200 module response', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics, { + modules: { + [HTTP_ERROR_MODULE_URL]: { status: 503, body: 'temporarily unavailable' }, + }, + }); + + await page.goto(`/index.html?url=${encodeURIComponent(HTTP_ERROR_MODULE_URL)}`); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(/Problem retrieving questionnaire module/); + await expect(page.locator('#markupTextArea')).toHaveValue(/HTTP response code: 503/); + expectAndClearConsoleErrors( + diagnostics, + [/Failed to fetch from .*not-found\.txt: 503/], + { allowedPatterns: [/Failed to load resource/] }, + ); + }); + + test('renders a deterministic error document for a rejected module request', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics, { + modules: { + [REJECTED_MODULE_URL]: { abort: 'failed' }, + }, + }); + + await page.goto(`/index.html?url=${encodeURIComponent(REJECTED_MODULE_URL)}`); + await waitForAuthoringReady(page); + + await expect(page.locator('#markupTextArea')).toHaveValue(/Error retrieving questionnaire module/); + expectAndClearConsoleErrors( + diagnostics, + [/Error fetching module from .*rejected\.txt/], + { + allowedPatterns: [ + /Failed to load resource/, + /NetworkError/, + /Load failed/, + /Cross-Origin Request Blocked/, + ], + }, + ); + }); + + test('debounces rapid author edits and renders only the last scheduled markup', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + await page.clock.install(); + + const textarea = page.locator('#markupTextArea'); + await textarea.fill('{"name":"FIRST_EDIT"}\n[FIRST] The discarded edit.'); + await textarea.dispatchEvent('keyup', { key: 'a' }); + await page.clock.fastForward(400); + await textarea.fill('{"name":"SECOND_EDIT"}\n[SECOND] The final edit.'); + await textarea.dispatchEvent('keyup', { key: 'b' }); + await page.clock.fastForward(500); + await expect(page.locator('#rendering #SECOND')).toBeVisible(); + await expect(page.locator('#rendering #FIRST')).toHaveCount(0); + }); + + test('applies language, markup visibility, font-size, and clearing controls', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + await openAuthoringSettings(page); + await page.locator('#langSelect').selectOption('es'); + await page.getByRole('switch', { name: 'Hide Markup' }).check(); + await expect(page.locator('#markup')).toBeHidden(); + await expect(page.locator('#renderText')).toBeHidden(); + await page.getByRole('switch', { name: 'Hide Markup' }).uncheck(); + await expect(page.locator('#markup')).toBeVisible(); + await closeAuthoringSettings(page); + + await renderAuthoringMarkdown(page, readCanonicalFixture('runtimeControls.txt')); + await expect(page.locator('#rendering #CHOICE button.next')).toContainText('Siguiente'); + + const textarea = page.locator('#markupTextArea'); + const initialFontSize = await textarea.evaluate((element) => ( + Number.parseFloat(getComputedStyle(element).fontSize) + )); + await page.getByRole('button', { name: 'Increase Font Size' }).click(); + await expect.poll(() => textarea.evaluate((element) => ( + Number.parseFloat(getComputedStyle(element).fontSize) + ))).toBe(initialFontSize + 1); + await page.getByRole('button', { name: 'Decrease Font Size' }).click(); + await expect.poll(() => textarea.evaluate((element) => ( + Number.parseFloat(getComputedStyle(element).fontSize) + ))).toBe(initialFontSize); + + await textarea.fill(''); + await textarea.dispatchEvent('keyup', { key: 'Backspace' }); + await expect(page.locator('#rendering form.question')).toHaveCount(0); + }); + + test('shows empty and populated response-table states without exposing treeJSON', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + await page.getByRole('button', { name: 'View Current Responses' }).click(); + await expect(page.locator('#currentResponsesTable')).toContainText('No responses found'); + await page.locator('#cache').getByRole('button', { name: 'Close' }).click(); + await expect(page.locator('#cache')).not.toHaveClass(/show/); + + await renderAuthoringMarkdown(page, readCanonicalFixture('runtimeControls.txt')); + await openAuthoringSettings(page); + await page.getByRole('switch', { name: 'Activate Logic' }).check(); + await closeAuthoringSettings(page); + await page.locator('#rendering #CHOICE input[type="radio"]').first().check(); + await page.locator('#rendering #CHOICE button.next').click(); + await expect(page.locator('#rendering #CHECKS.active')).toBeVisible(); + await page.getByRole('button', { name: 'View Current Responses' }).click(); + + const table = page.locator('#currentResponsesTable'); + await expect(table.locator('thead')).toContainText('Id'); + await expect(table.locator('thead')).toContainText('Value'); + await expect(table.locator('tbody')).toContainText('CHOICE'); + await expect(table.locator('tbody')).not.toContainText('treeJSON'); + }); +}); + +test.describe('cross-browser authoring storage and export boundaries @authoring', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !DESKTOP_ENGINES.has(testInfo.project.name), + 'IndexedDB persistence, the injected LocalForage failure, and downloads run in each desktop browser engine.', + ); + }); + + test('uses a nonpersistent host adapter when LocalForage initialization fails @cross-browser-authoring', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics, { + localForageMode: 'initialization-failure', + }); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + expectAndClearConsoleErrors(diagnostics, [/Failed to initialize LocalForage/]); + + await openAuthoringSettings(page); + await page.getByRole('switch', { name: 'Activate Logic' }).check(); + await closeAuthoringSettings(page); + await renderAuthoringMarkdown(page, readCanonicalFixture('validation.txt')); + + await expect(page.locator('#rendering form.question.active')).toHaveCount(1); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'ActiveLogic.css'); + expectAndClearConsoleWarnings(diagnostics, [ + /Using memory for getItem \(LF fallback\): previousResults/, + /Using memory for setItem \(LF fallback\): logic/, + ]); + + await page.reload({ waitUntil: 'load' }); + await waitForAuthoringReady(page); + expectAndClearConsoleErrors(diagnostics, [/Failed to initialize LocalForage/]); + expectAndClearConsoleWarnings(diagnostics, [ + /Using memory for getItem \(LF fallback\): previousResults/, + ]); + await expect(page.locator('#logic')).not.toBeChecked(); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'Default.css'); + }); + + test('persists settings/results, rejects invalid JSON, and clears previous results @cross-browser-authoring', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + await openAuthoringSettings(page); + await page.getByRole('switch', { name: 'Activate Logic' }).check(); + await page.getByRole('switch', { name: 'Use Styling' }).check(); + await page.getByRole('textbox', { name: 'json input' }).fill('{"PERSISTED":"yes"}'); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + await expect(page.locator('#loadDisplay')).toHaveText('Added JSON successfully.'); + + await page.reload({ waitUntil: 'load' }); + await waitForAuthoringReady(page); + await expect(page.locator('#logic')).toBeChecked(); + await expect(page.locator('#styling')).toBeChecked(); + await expect(page.locator('#jsonInput')).toHaveValue('{"PERSISTED":"yes"}'); + await expect(page.locator('#pagelogic')).toHaveAttribute('href', 'ActiveLogic.css'); + await expect(page.locator('#pagestyle')).toHaveAttribute('href', 'Style1.css'); + + await openAuthoringSettings(page); + await page.getByRole('textbox', { name: 'json input' }).fill('{not valid JSON'); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + await expect(page.locator('#loadDisplay')).toHaveText('Error: Invalid JSON format.'); + expectAndClearConsoleErrors(diagnostics, [/Error updating previous results/]); + + await page.getByRole('textbox', { name: 'json input' }).fill(''); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + await expect(page.locator('#loadDisplay')).toHaveText('Cleared previous results.'); + + await page.getByRole('textbox', { name: 'json input' }).fill('{"CLEAR_ME":true}'); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + await page.getByRole('button', { name: 'Clear Memory' }).click(); + await expect(page.locator('#loadDisplay')).toHaveText('Previous results cleared successfully'); + await expect(page.locator('#jsonInput')).toHaveValue(''); + + await page.reload({ waitUntil: 'load' }); + await waitForAuthoringReady(page); + await expect(page.locator('#jsonInput')).toHaveValue(''); + await expect(page.locator('#logic')).toBeChecked(); + await expect(page.locator('#styling')).toBeChecked(); + }); + + test('stores settings and previous results in the explicit questParams IndexedDB database', async ({ page, diagnostics }) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + + await openAuthoringSettings(page); + await page.getByRole('switch', { name: 'Activate Logic' }).check(); + await page.getByRole('switch', { name: 'Use Styling' }).check(); + await page.getByRole('textbox', { name: 'json input' }).fill('{"IDB":"verified"}'); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + + let storage; + await expect.poll(async () => { + storage = await readQuestParamsIndexedDb(page); + return storage.records; + }).toEqual({ + logic: true, + styling: true, + previousResults: '{"IDB":"verified"}', + }); + expect(storage.supportsDatabaseEnumeration).toBe(true); + expect(storage.databases.map((database) => database.name)).toContain('questParams'); + expect(storage.objectStores).toContain('params'); + }); + + test('downloads the exact authored markup under the requested export name', async ({ page, diagnostics }) => { + const markdown = readCanonicalFixture('navigationState.txt'); + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + await renderAuthoringMarkdown(page, markdown); + await openAuthoringSettings(page); + await page.getByRole('textbox', { name: 'File Name' }).fill('quest-export.txt'); + + const [download] = await Promise.all([ + page.waitForEvent('download'), + page.getByRole('button', { name: 'Save', exact: true }).click(), + ]); + expect(download.suggestedFilename()).toBe('quest-export.txt'); + + const chunks = []; + const stream = await download.createReadStream(); + for await (const chunk of stream) chunks.push(Buffer.from(chunk)); + expect(Buffer.concat(chunks).toString('utf8')).toBe(markdown); + }); +}); diff --git a/tests/e2e/authoringKnownDefects.spec.js b/tests/e2e/authoringKnownDefects.spec.js new file mode 100644 index 0000000..faa2933 --- /dev/null +++ b/tests/e2e/authoringKnownDefects.spec.js @@ -0,0 +1,42 @@ +import { test, expect, expectAndClearConsoleErrors } from './support/test.js'; +import { + installAuthoringRoutes, + openAuthoringSettings, + waitForAuthoringReady, +} from './support/authoring.js'; +import { runtimeDefects } from '../knownDefects/registry.js'; + +const DESKTOP_ENGINES = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); + +test.describe('open authoring regressions @known-defect @authoring', () => { + test('clears previous results after localforage initialization falls back', async ({ page, diagnostics }, testInfo) => { + test.skip( + !DESKTOP_ENGINES.has(testInfo.project.name), + 'Each desktop browser engine characterizes the fallback storage-adapter defect.', + ); + await installAuthoringRoutes(page, diagnostics, { + localForageMode: 'initialization-failure', + }); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + await openAuthoringSettings(page); + + const jsonInput = page.locator('#jsonInput'); + await jsonInput.fill('{"CLEAR_ME":true}'); + await page.getByRole('button', { name: 'Add JSON to Memory' }).click(); + await expect(page.locator('#loadDisplay')).toHaveText('Added JSON successfully.'); + await page.getByRole('button', { name: 'Clear Memory' }).click(); + + test.fail(true, `${runtimeDefects.authoringFallbackClear.localDefectId}: ${runtimeDefects.authoringFallbackClear.reason}`); + await expect.poll(() => diagnostics.consoleErrors.join('\n')).toMatch(/Error clearing LocalForage:.*removeItem/); + const actual = { + status: await page.locator('#loadDisplay').textContent(), + json: await jsonInput.inputValue(), + }; + expectAndClearConsoleErrors(diagnostics, [/Error clearing LocalForage:.*removeItem/]); + expect(actual).toEqual({ + status: 'Previous results cleared successfully', + json: '', + }); + }); +}); diff --git a/tests/e2e/backDeletion.spec.js b/tests/e2e/backDeletion.spec.js new file mode 100644 index 0000000..3a0a65c --- /dev/null +++ b/tests/e2e/backDeletion.spec.js @@ -0,0 +1,124 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goBack, + goNext, + openParticipant, + selectLabeledResponse, +} from './support/harness.js'; +import { runtimeDefects } from '../knownDefects/registry.js'; + +const questName = 'TEST_NAV'; +const pathQuestion = 'PATH'; +const pathTreeToken = 'PATH?'; +const detailQuestion = 'DETAIL'; + +function applySuccessfulHostDeltas(storeCalls) { + const persistedData = {}; + const namespace = `${questName}.`; + + for (const { changes, status } of storeCalls) { + if (status !== 'fulfilled') continue; + for (const [namespacedKey, value] of Object.entries(changes)) { + if (!namespacedKey.startsWith(namespace)) continue; + const key = namespacedKey.slice(namespace.length); + if (value === undefined) delete persistedData[key]; + else persistedData[key] = value; + } + } + + return persistedData; +} + +function persistedTreeAt(questionToken) { + return JSON.stringify({ + rootNode: { + value: null, + children: [{ value: questionToken, children: [] }], + }, + currentNode: questionToken, + }); +} + +test.describe('Back response deletion and branch pruning @core', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The host-deletion contract runs once in Chromium.'); + }); + + test('clears an answered descendant from the host, tree, and resumed form as the participant backs through it', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + + const detail = activeQuestion(page, detailQuestion).locator('#detail'); + await detail.fill('Abandoned detail'); + await detail.blur(); + await goNext(page); + await expect(activeQuestion(page, 'SUMMARY')).toBeVisible(); + + // The first Back returns to the answered descendant. The second Back is + // the operation that clears that answer and prunes it from PATH's branch. + await goBack(page); + await expect(activeQuestion(page, detailQuestion)).toBeVisible(); + await expect(activeQuestion(page, detailQuestion).locator('#detail')).toHaveValue('Abandoned detail'); + await goBack(page); + await expect(activeQuestion(page, pathQuestion)).toBeVisible(); + + const backedOut = await expectHealthyHarness(page); + const detailClear = backedOut.logs.storeCalls.findLast(({ changes }) => ( + Object.hasOwn(changes, `${questName}.${detailQuestion}`) + && changes[`${questName}.${detailQuestion}`] === undefined + )); + expect(detailClear).toMatchObject({ status: 'fulfilled' }); + expect(Object.hasOwn(detailClear.changes, `${questName}.${detailQuestion}`)).toBe(true); + expect(detailClear.changes[`${questName}.${detailQuestion}`]).toBeUndefined(); + + const prunedTree = JSON.parse(backedOut.state.survey.treeJSON); + expect(prunedTree).toEqual({ + rootNode: { + value: null, + children: [{ value: pathTreeToken, children: [] }], + }, + currentNode: pathTreeToken, + }); + + // Model the host's established undefined-as-delete contract, then supply + // that result to a fresh Quest render exactly as a later PWA session would. + const persistedData = applySuccessfulHostDeltas(backedOut.logs.storeCalls); + expect(persistedData).toMatchObject({ [pathQuestion]: '1' }); + expect(persistedData).not.toHaveProperty(detailQuestion); + expect(JSON.parse(persistedData.treeJSON)).toEqual(prunedTree); + + await openParticipant(page, { + fixture: 'navigationState.txt', + persistedData, + }); + await expect(activeQuestion(page, pathQuestion)).toBeVisible(); + // Reaffirm the retained parent route before revisiting its child. Quest's + // separate raw-tree-token response-restoration behavior is not part of + // this deletion contract. + await activeQuestion(page, pathQuestion).locator('label[for="PATH_1"]').click(); + await goNext(page); + await expect(activeQuestion(page, detailQuestion)).toBeVisible(); + await expect(activeQuestion(page, detailQuestion).locator('#detail')).toHaveValue(''); + await expectHealthyHarness(page); + }); + + test('restores a retained parent response from the raw tree token written by Back @known-defect', async ({ page }) => { + const defect = runtimeDefects.backResumeResponseRestoration; + + await openParticipant(page, { + fixture: 'navigationState.txt', + persistedData: { + [pathQuestion]: '1', + treeJSON: persistedTreeAt(pathTreeToken), + }, + }); + + await expect(activeQuestion(page, pathQuestion)).toBeVisible(); + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + await expect(activeQuestion(page, pathQuestion).locator('#PATH_1')) + .toBeChecked({ timeout: 1_000 }); + }); +}); diff --git a/tests/e2e/connectExperiencePaths.spec.js b/tests/e2e/connectExperiencePaths.spec.js new file mode 100644 index 0000000..39ec015 --- /dev/null +++ b/tests/e2e/connectExperiencePaths.spec.js @@ -0,0 +1,132 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { readLockedMarkdown, treeAt } from './support/corpus.js'; + +const questName = 'D_506648060'; +const deviceKinds = 'D_145727599'; +const phoneKinds = 'D_470013848'; +const otherPhoneText = 'D_495052121'; +const tabletKinds = 'D_731524314'; +const computerKinds = 'D_403175318'; +const preferredDevice = 'D_260186214'; +const personalDevice = 'D_210120853'; +const joiningReasons = 'D_960544981'; +const joiningReasonsDetail = 'D_674994176'; + +function response(question, response) { + return `${question}_${response}`; +} + +test.describe('locked 2024 Connect Experience derived conditions @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The production derived-condition paths run once in Chromium.'); + }); + + for (const language of ['en', 'es']) { + test(`uses nested ${language} device responses in selectionCount, response conditions, and piped labels`, async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('module2024ConnectExperience', language), + lang: language, + previousResults: { age: '45', yob: '1981' }, + persistedData: { treeJSON: treeAt(deviceKinds) }, + }); + + const devices = activeQuestion(page, deviceKinds); + await devices.locator(`label[for="${response(deviceKinds, '386252749')}"]`).click(); + await devices.locator(`label[for="${response(deviceKinds, '153962804')}"]`).click(); + await goNext(page); + + const phones = activeQuestion(page, phoneKinds); + await phones.locator(`label[for="${response(phoneKinds, '807835037')}"]`).click(); + await phones.locator(`#${otherPhoneText}`).fill('Synthetic phone'); + await phones.locator(`#${otherPhoneText}`).blur(); + await goNext(page); + + const tablets = activeQuestion(page, tabletKinds); + await tablets.locator(`label[for="${response(tabletKinds, '515798638')}"]`).click(); + await goNext(page); + + // The unselected computer branch is skipped. The selectionCount condition + // still sees one nested phone response plus one tablet response. + await expect(activeQuestion(page, computerKinds)).toHaveCount(0); + const preferred = activeQuestion(page, preferredDevice); + await expect(preferred).toBeVisible(); + await expect(preferred.locator(`label[for="${response(preferredDevice, '793072415')}"]`)).toContainText('Synthetic phone'); + await expect(preferred.locator(`label[for="${response(preferredDevice, '515798638')}"]`)).toBeVisible(); + await expect(preferred.locator(`label[for="${response(preferredDevice, '482753957')}"]`)).toBeHidden(); + await expect(preferred).not.toContainText('{$'); + + await preferred.locator(`label[for="${response(preferredDevice, '793072415')}"]`).click(); + await goNext(page); + await expect(activeQuestion(page, personalDevice)).toBeVisible(); + + await goBack(page); + await expect(activeQuestion(page, preferredDevice)).toBeVisible(); + await expect(activeQuestion(page, preferredDevice).locator(`#${response(preferredDevice, '793072415')}`)).toBeChecked(); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.state.survey).toMatchObject({ + [deviceKinds]: ['386252749', '153962804'], + [phoneKinds]: { + [phoneKinds]: ['807835037'], + [otherPhoneText]: 'Synthetic phone', + }, + [tabletKinds]: { + [tabletKinds]: ['515798638'], + }, + [preferredDevice]: '793072415', + }); + expect(snapshot.state.survey).not.toHaveProperty(computerKinds); + + const storedChanges = snapshot.logs.storeCalls.flatMap(({ changes }) => Object.entries(changes)); + expect(storedChanges).toEqual(expect.arrayContaining([ + [`${questName}.${phoneKinds}`, { + [phoneKinds]: ['807835037'], + [otherPhoneText]: 'Synthetic phone', + }], + [`${questName}.${preferredDevice}`, '793072415'], + ])); + }); + + test(`enforces the production ${language} top-three response boundary without losing valid selections`, async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('module2024ConnectExperience', language), + lang: language, + previousResults: { age: '45', yob: '1981' }, + persistedData: { treeJSON: treeAt(joiningReasons) }, + }); + + const reasons = activeQuestion(page, joiningReasons); + const selected = ['925993577', '985468594', '604524950']; + const overLimit = '815468840'; + + for (const responseId of [...selected, overLimit]) { + await reasons.locator(`label[for="${response(joiningReasons, responseId)}"]`).click(); + } + + await expect(reasons.locator('.validation-container')).toBeVisible(); + await goNext(page); + await expect(activeQuestion(page, joiningReasons)).toBeVisible(); + + await reasons.locator(`label[for="${response(joiningReasons, overLimit)}"]`).click(); + await expect(reasons.locator('.validation-container')).toHaveCount(0); + await goNext(page); + await expect(activeQuestion(page, joiningReasonsDetail)).toBeVisible(); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.state.survey[joiningReasons]).toEqual(selected); + expect(snapshot.logs.storeCalls).toEqual(expect.arrayContaining([ + expect.objectContaining({ + changes: expect.objectContaining({ [`${questName}.${joiningReasons}`]: selected }), + }), + ])); + }); + } +}); diff --git a/tests/e2e/constructs.spec.js b/tests/e2e/constructs.spec.js new file mode 100644 index 0000000..f7aec17 --- /dev/null +++ b/tests/e2e/constructs.spec.js @@ -0,0 +1,96 @@ +import { test, expect, expectAndClearConsoleWarnings } from './support/test.js'; +import { expectHealthyHarness, readCanonicalFixture } from './support/harness.js'; + +const DESKTOP_ENGINES = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); + +test.describe('canonical Markdown construct renderer @canonical @constructs', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !DESKTOP_ENGINES.has(testInfo.project.name), + 'The construct renderer is checked in all three desktop browser engines.', + ); + }); + + test('renders every supported question/control family through the public API', async ({ page, diagnostics }) => { + await page.goto('/tests/harness/participant.html'); + await page.waitForFunction(() => window.questHarness?.ready === true); + + const renderResult = await page.evaluate((markdown) => window.questHarness.render({ + activate: false, + isRenderer: true, + markdown, + previousResults: { + LIST_VALUE: ['one', 'two'], + SAVED: 'restored', + SHOW_BLOCK: '1', + SHOW_CHECKBOX: '1', + SHOW_GRID: '1', + SHOW_INLINE: '1', + SHOW_RADIO: '1', + SHOW_ROW: '1', + }, + }), readCanonicalFixture('allConstructs.txt')); + + expect(renderResult.result).toBe(true); + const root = page.locator('#questionnaireRoot'); + + await expect(root.locator('form.question')).toHaveCount(31); + await expect(root.locator('#PLAIN [data-bs-toggle="popover"]')).toHaveAttribute('data-bs-content', 'Synthetic help text'); + await expect(root.locator('#PLAIN img')).toHaveAttribute('src', 'https://episphere.github.io/quest/images/FemaleBaldness1.png'); + await expect(root.locator('#PLAIN .displayif')).toHaveCount(2); + await expect(root.locator('#PLAIN .displayList')).toHaveCount(2); + + await expect(root.locator('#RADIO input[type="radio"]')).toHaveCount(2); + await expect(root.locator('#CHECKBOX input[type="checkbox"]')).toHaveCount(3); + await expect(root.locator('#CHECKBOX')).toHaveAttribute('data-min-count', '1'); + await expect(root.locator('#CHECKBOX')).toHaveAttribute('data-max-count', '2'); + await expect(root.locator('#CHECKBOX input[data-reset="true"]')).toHaveCount(1); + await expect(root.locator('#COMBINED #COMBINED_807835037')).toHaveAttribute('type', 'checkbox'); + await expect(root.locator('#COMBINED #COMBINED_807835037')).toHaveAttribute('skipto', 'EMAIL'); + await expect(root.locator('#COMBINED #COMBINED_TEXT')).toHaveAttribute('type', 'text'); + await expect(root.locator('#COMBINED_TEXTAREA #COMBINED_TEXTAREA_GROUP_1')).toHaveAttribute('type', 'radio'); + await expect(root.locator('#COMBINED_TEXTAREA #COMBINED_TEXTAREA_GROUP_1')).toHaveAttribute('skipto', 'EMAIL'); + await expect(root.locator('#COMBINED_TEXTAREA #COMBINED_TEXTAREA_VALUE')).toHaveJSProperty('tagName', 'TEXTAREA'); + await expect(root.locator('#COMBINED_TEXTAREA label[for="COMBINED_TEXTAREA_GROUP_1"] #COMBINED_TEXTAREA_VALUE')).toHaveCount(1); + await expect(root.locator('#CONFIRM #CONFIRM_COPY')).not.toHaveAttribute('confirm'); + await expect(root.locator('#CONFIRM #CONFIRM_COPY')).toHaveAttribute('data-confirm', 'CONFIRM_ORIGINAL'); + await expect(root.locator('#CONFIRM #CONFIRM_ORIGINAL')).toHaveAttribute('data-confirmation-for', 'CONFIRM_COPY'); + + const scalarTypes = { + EMAIL_VALUE: 'email', + PHONE_VALUE: 'tel', + FULL_SSN_VALUE: 'text', + SHORT_SSN_VALUE: 'text', + ZIP_VALUE: 'text', + DATE_VALUE: 'date', + MONTH_VALUE: 'month', + TIME_VALUE: 'time', + NUMBER_VALUE: 'number', + TEXT_VALUE: 'text', + TEXTBOX_VALUE: 'text', + }; + for (const [id, type] of Object.entries(scalarTypes)) { + await expect(root.locator(`#${id}`), `${id} should render as ${type}`).toHaveAttribute('type', type); + } + await expect(root.locator('#STATE_VALUE')).toHaveJSProperty('tagName', 'SELECT'); + await expect(root.locator('#TEXTAREA_VALUE')).toHaveJSProperty('tagName', 'TEXTAREA'); + await expect(root.locator('#HIDDEN_VALUE')).toHaveAttribute('data-hidden', 'true'); + await expect(root.locator('#YES_NO input[type="radio"]')).toHaveCount(2); + await expect(root.locator('#YES_NO_PREFER input[type="radio"]')).toHaveCount(3); + + await expect(root.locator('#DEFAULT_SKIP input[type="hidden"][skipto="GRID_RADIO"]')).toHaveCount(1); + await expect(root.locator('#NO_RESPONSE_SKIP input.noresponse[skipto="GRID_RADIO"]')).toHaveCount(1); + await expect(root.locator('#GRID_RADIO input[type="radio"]')).toHaveCount(4); + await expect(root.locator('#GRID_CHECKBOX input[type="checkbox"]')).toHaveCount(2); + await expect(root.locator('form.question[id^="LOOP_ITEM_"]')).toHaveCount(2); + + expect(diagnostics.fulfilledExternalRequests).toContain( + 'https://episphere.github.io/quest/images/FemaleBaldness1.png', + ); + expectAndClearConsoleWarnings(diagnostics, [ + /confirm element found: CONFIRM_ORIGINAL/, + /confirm element found \(otherElement\):/, + ]); + await expectHealthyHarness(page); + }); +}); diff --git a/tests/e2e/corpusAsyncHooks.spec.js b/tests/e2e/corpusAsyncHooks.spec.js new file mode 100644 index 0000000..c923877 --- /dev/null +++ b/tests/e2e/corpusAsyncHooks.spec.js @@ -0,0 +1,159 @@ +import { existsSync, readFileSync } from 'node:fs'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { test, expect } from './support/test.js'; +import { + flushHarness, + harnessSnapshot, +} from './support/harness.js'; + +const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..'); +const corpusRoot = path.join(repositoryRoot, 'tests', 'corpus'); +const lock = JSON.parse(readFileSync(path.join(corpusRoot, 'lock.json'), 'utf8')); +const registry = JSON.parse(readFileSync(path.join(corpusRoot, 'hostPersonas.json'), 'utf8')); +const cacheRoot = path.join(repositoryRoot, lock.cacheRoot, lock.commit); +const canonicalClock = new Date('2024-07-15T12:00:00.000Z'); +const outcomeNames = ['success', 'empty', 'rejection', 'delayed']; +const expectedObservationCount = Object.keys(registry.asyncHooks).length * outcomeNames.length; + +const argumentValues = { + D_627122657: 'Clinical research scientist', + D_796828094: 'Analyzed study data', + D_118061122: 'High school math teacher', + D_518387017: 'Taught algebra and geometry', + D_951357171: '353358909', + D_667908442: '668770150', +}; + +test.describe('locked production asynchronous host contracts @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'Host-hook regression runs in Chromium only.'); + testInfo.setTimeout(180_000); + }); + + test('executes all four host hooks under all deterministic outcomes', async ({ page }) => { + await page.clock.setFixedTime(canonicalClock); + + for (const [hookKey, hook] of Object.entries(registry.asyncHooks).sort(([left], [right]) => ( + left.localeCompare(right) + ))) { + const record = lockedEnglishSurvey(hook.module); + const sourcePath = path.join(cacheRoot, record.path); + expect(existsSync(sourcePath), `Run npm run corpus:fetch for ${record.path}.`).toBe(true); + const markdown = readFileSync(sourcePath, 'utf8'); + + for (const outcomeName of outcomeNames) { + const fixture = registry.asyncFixtures[outcomeName]; + const outcome = materializeOutcome(fixture, hook.fixtureResult); + const fixtureResult = fixture.results[hook.fixtureResult]; + const previousResults = Object.fromEntries(hook.args.map((argument) => [ + argument, + argumentValues[argument], + ])); + expect(Object.values(previousResults).every((value) => value !== undefined)).toBe(true); + + const renderResult = await renderParticipant(page, { + markdown, + lang: 'en', + questVersion: record.version, + persistedData: { treeJSON: treeAt(hook.questionId) }, + previousResults, + asyncQuestionsMap: { + [hook.markupKey]: { func: hook.function, args: hook.args }, + }, + asyncOutcomes: [outcome], + asyncQuestionHtml: hook.function === 'soccer' + ? soccerHtml(fixtureResult) + : undefined, + }); + + if (!renderResult.result) { + const failedSnapshot = await harnessSnapshot(page); + throw new Error(`Production hook render failed: ${JSON.stringify(failedSnapshot.logs.errors)}`); + } + expect(renderResult.activeQuestionId).toBe(hook.questionId); + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + const calls = snapshot.logs.asyncCalls; + const call = calls[0]; + const form = page.locator(`#questionnaireRoot form.question.active#${hook.questionId}`); + const validationMessages = await form.locator('.validation-container').allTextContents(); + const injectedResponses = await form.locator('.response input').evaluateAll((controls) => ( + controls.map((control) => ({ + id: control.id, + value: control.value, + label: document.querySelector(`label[for="${CSS.escape(control.id)}"]`)?.textContent?.trim() ?? null, + })) + )); + + expect(calls).toHaveLength(1); + expect(call.func).toBe(hook.function); + expect(call.args).toEqual([...hook.args.map((argument) => argumentValues[argument]), 'en']); + expect(call.status).toBe(outcomeName === 'rejection' ? 'rejected' : 'fulfilled'); + + if (outcomeName === 'rejection') { + expect(validationMessages.join(' ')).toContain('Error fetching question'); + expect(call.error.message).toBe('Deterministic host callback failure'); + expect(snapshot.logs.errors.some((entry) => ( + entry.message.includes('Deterministic host callback failure') + ))).toBe(true); + } else { + expect(validationMessages).toEqual([]); + expect(snapshot.logs.errors).toEqual([]); + expect(call.value ?? null).toEqual(outcome.value ?? null); + } + + if (hook.function === 'soccer' && ['success', 'delayed'].includes(outcomeName)) { + expect(injectedResponses).toHaveLength(1); + expect(injectedResponses[0]).toMatchObject({ + value: fixtureResult[0].code, + label: fixtureResult[0].title, + }); + } else { + expect(injectedResponses).toEqual([]); + } + } + } + + expect(expectedObservationCount).toBe(16); + }); +}); + +function lockedEnglishSurvey(moduleName) { + const record = lock.files.find((entry) => entry.module === moduleName && entry.locale === 'en'); + if (!record) throw new Error(`No locked English questionnaire exists for ${moduleName}.`); + return record; +} + +async function renderParticipant(page, config) { + await page.goto('/tests/harness/participant.html'); + await page.waitForFunction(() => window.questHarness?.ready === true); + return page.evaluate((renderConfig) => window.questHarness.render(renderConfig), config); +} + +function treeAt(questionId) { + return JSON.stringify({ + rootNode: { + value: null, + children: [{ value: questionId, children: [] }], + }, + currentNode: questionId, + }); +} + +function materializeOutcome(fixture, fixtureResultName) { + const configured = fixture.outcomes[0]; + if (configured.kind !== 'resolve' || Object.hasOwn(configured, 'value')) return configured; + return { + ...configured, + value: fixture.results[fixtureResultName], + }; +} + +function soccerHtml(result) { + if (!Array.isArray(result) || result.length === 0) return undefined; + const [{ code, title }] = result; + const safeId = `HOST_${code.replace(/[^a-zA-Z0-9_-]+/g, '_')}`; + return `
`; +} diff --git a/tests/e2e/corpusConditionProbeRegressions.spec.js b/tests/e2e/corpusConditionProbeRegressions.spec.js new file mode 100644 index 0000000..02d9535 --- /dev/null +++ b/tests/e2e/corpusConditionProbeRegressions.spec.js @@ -0,0 +1,35 @@ +import { harnessSnapshot, openParticipant, readCanonicalFixture } from './support/harness.js'; +import { expect, test } from './support/test.js'; + +const markdown = readCanonicalFixture('nestedTextPresence.txt'); +const desktopProjects = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); + +test.describe('nested-text condition regression @canonical @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(!desktopProjects.has(testInfo.project.name), 'Regression runs in the canonical desktop browser matrix.'); + }); + + test('renders the production-shaped nested-text construct in full-list mode without errors', async ({ page }) => { + await page.goto('/tests/harness/participant.html'); + await page.waitForFunction(() => window.questHarness?.ready === true); + const result = await page.evaluate((source) => window.questHarness.render({ + activate: false, + isRenderer: true, + markdown: source, + lang: 'en', + previousResults: { age: '45', yob: '1979' }, + }), markdown); + expect(result.result).toBe(true); + await expect(page.locator('#D_495052121, #D_638847244, #D_507471937')).toHaveCount(3); + expect((await harnessSnapshot(page)).logs.errors).toEqual([]); + }); + + test('keeps a nested Other response through the condition-dependent participant path', async ({ page }) => { + await openParticipant(page, { markdown }); + await page.locator('label', { hasText: 'Other phone' }).first().click(); + await page.locator('#D_495052121').fill('Synthetic phone'); + await page.getByRole('button', { name: 'Next question' }).click(); + await expect(page.locator('#questionnaireRoot form.question.active#D_731524314')).toBeVisible(); + expect((await harnessSnapshot(page)).logs.errors).toEqual([]); + }); +}); diff --git a/tests/e2e/corpusFullRender.spec.js b/tests/e2e/corpusFullRender.spec.js new file mode 100644 index 0000000..20bbb1c --- /dev/null +++ b/tests/e2e/corpusFullRender.spec.js @@ -0,0 +1,120 @@ +import { existsSync, readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { test, expect } from './support/test.js'; +import { expectHealthyHarness } from './support/harness.js'; +import { corpusLock, lockedCorpusPath, repositoryRoot } from './support/corpus.js'; + +const personaRegistry = JSON.parse(readFileSync(join(repositoryRoot, 'tests', 'corpus', 'hostPersonas.json'), 'utf8')); +const smokePersona = personaRegistry.personas.find(({ id }) => id === 'external-branch-primary'); + +function diagnosticLabel(record) { + return `${record.module} (${record.locale}, ${record.path})`; +} + +function renderedFormId(questionId) { + // `?` and `!` describe response semantics in Markdown; Quest deliberately + // removes them when it assigns the DOM form ID. + return questionId.replace(/[?!]$/, ''); +} + +function asyncQuestionsFor(record) { + return Object.fromEntries(Object.values(personaRegistry.asyncHooks) + .filter(({ module }) => module === record.module) + .map(({ markupKey, function: func, args }) => [markupKey, { func, args }])); +} + +async function openFullListParticipant(page, config) { + await page.goto('/tests/harness/participant.html'); + await page.waitForFunction(() => window.questHarness?.ready === true); + const renderResult = await page.evaluate((renderConfig) => window.questHarness.render(renderConfig), config); + expect(renderResult.result, 'transform.render should report a successful full-list render').toBe(true); + return renderResult; +} + +test.describe('locked production full-list rendering @corpus @full-render', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + testInfo.project.name !== 'chromium-desktop', + 'The complete locked-corpus full render runs once in Chromium.', + ); + }); + + for (const record of corpusLock.files) { + test(`${diagnosticLabel(record)} converts every parser-produced form`, async ({ page }, testInfo) => { + const sourcePath = lockedCorpusPath(record); + expect( + existsSync(sourcePath), + `${diagnosticLabel(record)}: locked corpus cache is absent. Run npm run corpus:fetch for ${corpusLock.commit}.`, + ).toBe(true); + expect(smokePersona, 'The full-render suite requires the primary locked host persona.').toBeTruthy(); + + const markdown = readFileSync(sourcePath, 'utf8'); + const participantInputs = { + ...smokePersona.previousResults, + ...smokePersona.userProfile, + }; + testInfo.annotations.push( + { type: 'host-persona', description: smokePersona.id }, + { type: 'corpus-path', description: record.path }, + { type: 'source-question-count', description: String(record.sourceQuestionCount) }, + ); + + const result = await openFullListParticipant(page, { + activate: false, + asyncQuestionsMap: asyncQuestionsFor(record), + isRenderer: true, + lang: record.locale, + markdown, + previousResults: participantInputs, + questVersion: record.version, + showProgress: false, + }); + + expect(result.errorCount, `${diagnosticLabel(record)}: Quest reported an error during full-list rendering`).toBe(0); + + const renderSummary = await page.locator('#questionnaireRoot').evaluate(async (root) => { + const forms = [...root.querySelectorAll('form.question')]; + const { getStateManager } = await import('/stateManager.js'); + const processor = getStateManager(true).getQuestionProcessor(); + const emptyForms = forms.flatMap((form) => { + const body = form.querySelector('fieldset, table'); + const hasContent = body && ( + body.textContent.trim().length > 0 + || body.querySelector('input, textarea, select, img, a') + ); + return form.id && hasContent ? [] : [{ id: form.id, hasBody: Boolean(body) }]; + }); + return { + formCount: forms.length, + emptyForms, + ids: forms.map((form) => form.id), + processorQuestionCount: processor.questions.length, + processedQuestionCount: processor.processedQuestions.size, + processorQuestionIds: processor.questions.map(({ questionID }) => questionID), + }; + }); + + expect( + renderSummary.formCount, + `${diagnosticLabel(record)}: the renderer must append every form produced by QuestionProcessor.`, + ).toBe(renderSummary.processorQuestionCount); + expect( + renderSummary.processedQuestionCount, + `${diagnosticLabel(record)}: full-list mode must convert every QuestionProcessor entry.`, + ).toBe(renderSummary.processorQuestionCount); + expect( + renderSummary.ids, + `${diagnosticLabel(record)}: rendered forms must remain in QuestionProcessor order.`, + ).toEqual(renderSummary.processorQuestionIds.map(renderedFormId)); + expect(renderSummary.emptyForms, `${diagnosticLabel(record)}: forms must have an ID and rendered content`).toEqual([]); + expect( + [...new Set(renderSummary.ids.filter((id, index) => ( + id !== 'END_OF_LOOP' && renderSummary.ids.indexOf(id) !== index + )))], + `${diagnosticLabel(record)}: participant-facing rendered form IDs must be unique.`, + ).toEqual([]); + + await expectHealthyHarness(page); + }); + } +}); diff --git a/tests/e2e/corpusParticipant.spec.js b/tests/e2e/corpusParticipant.spec.js new file mode 100644 index 0000000..5c93993 --- /dev/null +++ b/tests/e2e/corpusParticipant.spec.js @@ -0,0 +1,51 @@ +import { existsSync, readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + openParticipant, +} from './support/harness.js'; +import { corpusLock, lockedCorpusPath, repositoryRoot } from './support/corpus.js'; + +const personaRegistry = JSON.parse(readFileSync(join(repositoryRoot, 'tests', 'corpus', 'hostPersonas.json'), 'utf8')); +const smokePersona = personaRegistry.personas.find(({ id }) => id === 'external-branch-primary'); + +test.describe('locked production participant startup @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + testInfo.project.name !== 'chromium-desktop', + 'The complete locked-corpus smoke runs once in Chromium.', + ); + }); + + for (const record of corpusLock.files) { + test(`${record.module} (${record.locale}) starts from ${record.path}`, async ({ page }, testInfo) => { + const sourcePath = lockedCorpusPath(record); + expect( + existsSync(sourcePath), + `Locked corpus cache is absent. Run npm run corpus:fetch for ${corpusLock.commit}.`, + ).toBe(true); + + const markdown = readFileSync(sourcePath, 'utf8'); + expect(smokePersona).toBeTruthy(); + const participantInputs = { + ...smokePersona.previousResults, + ...smokePersona.userProfile, + }; + testInfo.annotations.push({ type: 'host-persona', description: smokePersona.id }); + const result = await openParticipant(page, { + markdown, + lang: record.locale, + previousResults: participantInputs, + questVersion: record.version, + }); + + expect(result.activeQuestionId).toBeTruthy(); + await expect(activeQuestion(page)).toBeVisible(); + expect((await activeQuestion(page).innerText()).trim().length).toBeGreaterThan(0); + await expect(page.locator('#questionnaireRoot form.question.active')).toHaveCount(1); + await expectHealthyHarness(page); + }); + } +}); diff --git a/tests/e2e/gridDeepCoverage.spec.js b/tests/e2e/gridDeepCoverage.spec.js new file mode 100644 index 0000000..22c325b --- /dev/null +++ b/tests/e2e/gridDeepCoverage.spec.js @@ -0,0 +1,77 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + flushHarness, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { + productionSleepGridMarkdown, + productionSleepGridRows, + selectProductionSleepGridRows, +} from './support/gridDeepCoverageFixtures.js'; + +const CHECKBOX_GRID_PROJECTS = new Set(['chromium-desktop', 'chromium-phone']); + +test.describe('deep participant grid coverage @canonical @responsive', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !CHECKBOX_GRID_PROJECTS.has(testInfo.project.name), + 'This deep grid walk runs at the desktop and phone layout boundaries.', + ); + }); + + test('keeps delegated label selection, responsive state, and storage aligned', async ({ page }, testInfo) => { + await openParticipant(page, { markdown: productionSleepGridMarkdown }); + await goNext(page); + const grid = activeQuestion(page, 'D_981441822'); + const rows = grid.locator('tr[data-gridrow="true"]'); + const expectedRows = productionSleepGridRows; + + await expect(rows).toHaveCount(9); + await expect(grid.locator('th[scope="col"]')).toHaveCount(4); + const firstRowSecondOption = grid.locator('#D_403155173_1'); + await expect(firstRowSecondOption.locator('xpath=following-sibling::label')).toHaveText('Slight Chance'); + await selectProductionSleepGridRows(grid, expectedRows); + await expect(firstRowSecondOption).toBeChecked(); + + if (testInfo.project.name === 'chromium-phone') { + await expect(grid.locator('thead')).toHaveCSS('display', 'none'); + const unselectedFirstOptionLabel = grid.locator('#D_403155173_0').locator('xpath=following-sibling::label'); + await expect(unselectedFirstOptionLabel).toBeVisible(); + await expect(unselectedFirstOptionLabel).toHaveCSS('color', 'rgb(51, 51, 51)'); + await expect(firstRowSecondOption.locator('xpath=following-sibling::label')).toBeVisible(); + await expect(firstRowSecondOption.locator('xpath=following-sibling::label')).toHaveCSS('color', 'rgb(255, 255, 255)'); + } else { + const selectedMarker = await firstRowSecondOption.locator('xpath=following-sibling::label').evaluate((label) => { + const marker = getComputedStyle(label, '::after'); + const unselectedCircle = getComputedStyle(label, '::before'); + return { + markerDisplay: marker.display, + markerColor: marker.backgroundColor, + markerWidth: Number.parseFloat(marker.width), + unselectedCircleDisplay: unselectedCircle.display, + unselectedCircleWidth: Number.parseFloat(unselectedCircle.width), + }; + }); + expect(selectedMarker.markerDisplay).toBe('block'); + expect(selectedMarker.markerColor).toBe('rgb(50, 122, 187)'); + expect(selectedMarker.markerWidth).toBeGreaterThan(0); + expect(selectedMarker.unselectedCircleDisplay).toBe('block'); + expect(selectedMarker.unselectedCircleWidth).toBeGreaterThan(selectedMarker.markerWidth); + } + + const beforeNext = await harnessSnapshot(page); + expect(beforeNext.state.active).toMatchObject({ D_981441822: expectedRows }); + await goNext(page); + await expect(activeQuestion(page, 'GRID_FOLLOWUP')).toBeVisible(); + await flushHarness(page); + + const stored = await harnessSnapshot(page); + expect(stored.state.survey).toMatchObject({ D_981441822: expectedRows }); + expect(stored.logs.storeCalls).toHaveLength(2); + expect(stored.logs.storeCalls.at(-1).changes['TEST_PRODUCTION_GRID.D_981441822']).toEqual(expectedRows); + // The focus-helper lifecycle is asserted in the separate QD-GRID-002 expected-red contract. + }); +}); diff --git a/tests/e2e/gridDeepCoverageKnownDefects.spec.js b/tests/e2e/gridDeepCoverageKnownDefects.spec.js new file mode 100644 index 0000000..c65872d --- /dev/null +++ b/tests/e2e/gridDeepCoverageKnownDefects.spec.js @@ -0,0 +1,43 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goBack, + goNext, + openParticipant, + waitInHarness, +} from './support/harness.js'; +import { + productionSleepGridMarkdown, + productionSleepGridRows, + selectProductionSleepGridRows, +} from './support/gridDeepCoverageFixtures.js'; +import { runtimeDefects } from '../knownDefects/registry.js'; + +test.describe('grid lifecycle known defects @known-defect', () => { + test('QD-GRID-002 restores real production grid selections without losing the focus helper', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-windows-ua', 'The focus-helper lifecycle runs only through Quest’s Windows accessibility branch.'); + const defect = runtimeDefects.gridBackFocusLifecycle; + + expect(await page.evaluate(() => navigator.userAgent)).toContain('Windows NT'); + await openParticipant(page, { markdown: productionSleepGridMarkdown }); + await goNext(page); + const grid = activeQuestion(page, 'D_981441822'); + await expect(grid).toBeVisible(); + expect(await grid.locator('td.response').count()).toBeGreaterThan(0); + await selectProductionSleepGridRows(grid, productionSleepGridRows); + await goNext(page); + await expect(activeQuestion(page, 'GRID_FOLLOWUP')).toBeVisible(); + + await goBack(page); + await expect(activeQuestion(page, 'D_981441822')).toBeVisible(); + for (const [rowId, value] of Object.entries(productionSleepGridRows)) { + await expect(grid.locator(`input[name="${rowId}"][value="${value}"]`)).toBeChecked(); + } + + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + await expect(grid.locator('#srFocusHelper')).toHaveCount(1); + await waitInHarness(page, 150); + await expectHealthyHarness(page); + }); +}); diff --git a/tests/e2e/knownDefects.spec.js b/tests/e2e/knownDefects.spec.js new file mode 100644 index 0000000..a556a1a --- /dev/null +++ b/tests/e2e/knownDefects.spec.js @@ -0,0 +1,249 @@ +import { test, expect } from './support/test.js'; +import { activeQuestion, goNext, openParticipant, selectLabeledResponse, waitInHarness } from './support/harness.js'; +import { analyzeQuestAxe, matchesAxeDefect } from './support/axe.js'; +import { accessibilityDefects, axeDefects, runtimeDefects } from '../knownDefects/registry.js'; + +const ASSISTIVE_TECH_ENGINES = new Set(['chromium-desktop', 'webkit-desktop']); +const CHOICE_SEMANTIC_PROJECTS = new Set([ + ...ASSISTIVE_TECH_ENGINES, + 'chromium-windows-ua', +]); +const NATIVE_KEYBOARD_ENGINES = new Set([ + 'chromium-desktop', + 'firefox-desktop', + 'webkit-desktop', + 'chromium-windows-ua', +]); + +async function axeFindingsForDefect(page, defect) { + const findings = await analyzeQuestAxe(page); + return findings.filter((finding) => matchesAxeDefect(finding, defect)); +} + +function characterizeAxeDefect(name, defect, prepare, project = 'chromium-desktop') { + test(name, async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== project, `Characterized in ${project}; blocking scans still run in every desktop engine.`); + await prepare(page); + const findings = await axeFindingsForDefect(page, defect); + test.fail(true, `${defect.localDefectId}: ${defect.reason}`); + expect(findings).toEqual([]); + }); +} + +test.describe('open accessibility regressions @known-defect', () => { + characterizeAxeDefect( + 'progressbar has an accessible name', + axeDefects.progressbarName, + (page) => openParticipant(page, { fixture: 'navigationState.txt' }), + ); + + characterizeAxeDefect( + 'progressbar exposes a valid ARIA value', + axeDefects.progressbarValue, + (page) => openParticipant(page, { fixture: 'navigationState.txt' }), + ); + + characterizeAxeDefect( + 'responsive grid has no empty row-header spacer', + axeDefects.emptyGridHeader, + async (page) => { + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + await expect(activeQuestion(page, 'GRID_RATE')).toBeVisible(); + }, + ); + + characterizeAxeDefect( + 'validation message meets contrast requirements', + axeDefects.validationContrast, + async (page) => { + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('9'); + await goNext(page); + await expect(activeQuestion(page).locator('.validation-container')).toBeVisible(); + }, + ); + + characterizeAxeDefect( + 'bounded numeric input has a non-title label', + axeDefects.validationLabel, + async (page) => { + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('9'); + await goNext(page); + await expect(activeQuestion(page).locator('.validation-container')).toBeVisible(); + }, + ); + + test('#1079 exposes named radio roles and their checked state', async ({ page }, testInfo) => { + test.skip(!ASSISTIVE_TECH_ENGINES.has(testInfo.project.name), 'Chromium and WebKit capture the JAWS/VoiceOver semantic baseline.'); + + await openParticipant(page); + await selectLabeledResponse(page, 'Blue'); + const question = activeQuestion(page, 'CHOICE'); + expect(await question.locator('input[type="radio"]').count()).toBe(2); + await expect(question.locator('#CHOICE_1')).toBeChecked(); + test.fail(true, `${accessibilityDefects[1079].issue}: ${accessibilityDefects[1079].automatedContract}`); + expect(await question.getByRole('radio').count()).toBe(2); + await expect(question.getByRole('radio', { name: 'Blue' })).toBeChecked(); + await expect(question.getByRole('radio', { name: 'Green' })).not.toBeChecked(); + }); + + test('#1079 preserves named radio roles and state in the Windows branch', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-windows-ua', 'This semantic contract targets Quest’s Windows-specific branch.'); + + await openParticipant(page); + await selectLabeledResponse(page, 'Green'); + const question = activeQuestion(page, 'CHOICE'); + expect(await question.locator('input[type="radio"]').count()).toBe(2); + await expect(question.locator('#CHOICE_2')).toBeChecked(); + test.fail(true, `${accessibilityDefects[1079].issue}: ${accessibilityDefects[1079].automatedContract}`); + expect(await question.getByRole('radio').count()).toBe(2); + await expect(question.getByRole('radio', { name: 'Blue' })).not.toBeChecked(); + await expect(question.getByRole('radio', { name: 'Green' })).toBeChecked(); + }); + + test('#1079 exposes named checkbox roles and their checked state', async ({ page }, testInfo) => { + test.skip(!CHOICE_SEMANTIC_PROJECTS.has(testInfo.project.name), 'Chromium, WebKit, and the Windows branch capture the assistive-technology semantic baseline.'); + + await openParticipant(page); + await selectLabeledResponse(page, 'Blue'); + await goNext(page); + await selectLabeledResponse(page, 'Email'); + + const question = activeQuestion(page, 'CHECKS'); + expect(await question.locator('input[type="checkbox"]').count()).toBe(2); + await expect(question.locator('#CHECKS_1')).toBeChecked(); + test.fail(true, `${accessibilityDefects[1079].issue}: native checkboxes must expose role, name, and checked state.`); + expect(await question.getByRole('checkbox').count()).toBe(2); + await expect(question.getByRole('checkbox', { name: 'Email' })).toBeChecked(); + await expect(question.getByRole('checkbox', { name: 'Text message' })).not.toBeChecked(); + }); + + test('#1079 exposes each grid choice with its row and column name plus checked state', async ({ page }, testInfo) => { + test.skip(!CHOICE_SEMANTIC_PROJECTS.has(testInfo.project.name), 'Chromium, WebKit, and the Windows branch capture the assistive-technology semantic baseline.'); + + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + await waitInHarness(page, 550); + const question = activeQuestion(page, 'GRID_RATE'); + await question.locator('tr[data-question-id="GRID_WALK"] label', { hasText: 'Sometimes' }).click(); + await expect(question.locator('#GRID_WALK_1')).toBeChecked(); + + test.fail(true, `${accessibilityDefects[1079].issue}: a grid choice must expose its row prompt, column option, and checked state together.`); + const selected = question.getByRole('radio', { name: /Walking.*Sometimes|Sometimes.*Walking/ }); + await expect(selected).toHaveCount(1); + await expect(selected).toBeChecked(); + await expect(question.getByRole('radio', { name: /Cycling.*Often|Often.*Cycling/ })).not.toBeChecked(); + }); + + test('#1079 restores focus to a Windows list choice after pointer activation', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-windows-ua', 'This focus contract targets Quest’s Windows-specific list branch.'); + + await openParticipant(page); + await waitInHarness(page, 550); + await selectLabeledResponse(page, 'Green'); + await waitInHarness(page, 150); + await expect(activeQuestion(page, 'CHOICE').locator('#CHOICE_2')).toBeChecked(); + test.fail(true, `${accessibilityDefects[1079].issue}: list activation must return focus to the operable native choice.`); + await expect(activeQuestion(page, 'CHOICE').locator('#CHOICE_2')).toBeFocused(); + }); + + test('#1587 retains native radio focus and activates it with Space', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_ENGINES.has(testInfo.project.name), 'The native keyboard baseline runs in every desktop engine.'); + + await openParticipant(page); + const first = activeQuestion(page).locator('#CHOICE_1'); + await expect(first).not.toBeChecked(); + await first.focus(); + // Retaining native input focus is the first currently broken part of this + // keyboard contract. Once fixed, the same test advances to Space itself. + test.fail(true, `${accessibilityDefects[1587].issue}: a native radio must retain focus and Space must check it.`); + await expect(first).toBeFocused(); + await page.keyboard.press('Space'); + const checked = await first.isChecked(); + expect(checked).toBe(true); + }); + + test('#1587 preserves native radio arrow movement and group exclusivity', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_ENGINES.has(testInfo.project.name), 'The native keyboard baseline runs in every desktop engine.'); + + await openParticipant(page); + await selectLabeledResponse(page, 'Blue'); + const first = activeQuestion(page).locator('#CHOICE_1'); + const second = activeQuestion(page).locator('#CHOICE_2'); + await expect(first).toBeChecked(); + await expect(second).not.toBeChecked(); + await first.focus(); + test.fail(true, `${accessibilityDefects[1587].issue}: a native radio must retain focus before arrows move its checked group state.`); + await expect(first).toBeFocused(); + await page.keyboard.press('ArrowRight'); + const actual = { + first: await first.isChecked(), + second: await second.isChecked(), + focused: await page.evaluate(() => document.activeElement?.id), + }; + expect(actual).toEqual({ first: false, second: true, focused: 'CHOICE_2' }); + }); + + test('#1587 retains native checkbox focus and toggles it with Space', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_ENGINES.has(testInfo.project.name), 'The native keyboard baseline runs in every desktop engine.'); + + await openParticipant(page); + await activeQuestion(page).locator('label', { hasText: 'Blue' }).click(); + await activeQuestion(page).getByRole('button', { name: 'Next question' }).click(); + const checkbox = activeQuestion(page, 'CHECKS').locator('#CHECKS_1'); + await expect(checkbox).not.toBeChecked(); + await checkbox.focus(); + test.fail(true, `${accessibilityDefects[1587].issue}: a native checkbox must retain focus and Space must toggle it.`); + await expect(checkbox).toBeFocused(); + await page.keyboard.press('Space'); + const selected = await checkbox.isChecked(); + await page.keyboard.press('Space'); + const deselected = await checkbox.isChecked(); + expect([selected, deselected]).toEqual([true, false]); + }); + + test('#1587 preserves the browser-native select keyboard contract', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_ENGINES.has(testInfo.project.name), 'The native keyboard baseline runs in every desktop engine.'); + + await openParticipant(page, { fixture: 'nativeSelect.txt' }); + const stateSelect = activeQuestion(page, 'STATE').locator('#home_state'); + await stateSelect.focus(); + await expect(stateSelect).toBeFocused(); + await page.keyboard.press('ArrowDown'); + const value = await stateSelect.inputValue(); + test.fail(true, `${accessibilityDefects[1587].issue}: Quest must not trap native select keys.`); + expect(value).not.toBe(''); + }); + + test('restores focus to the submit trigger after Escape closes its dialog', async ({ page }, testInfo) => { + test.skip(!NATIVE_KEYBOARD_ENGINES.has(testInfo.project.name), 'The modal focus contract runs in every desktop engine.'); + + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('2'); + await goNext(page); + const trigger = activeQuestion(page, 'END').getByRole('button', { name: 'Submit your survey' }); + const modal = page.locator('#submitModal'); + await trigger.click(); + await expect(modal).toHaveClass(/show/); + await expect(page.locator('#submitModalTitle')).toBeFocused(); + await page.keyboard.press('Escape'); + await waitInHarness(page, 700); + await expect(modal).not.toHaveClass(/show/); + test.fail(true, `${runtimeDefects.submitFocusRestore.localDefectId}: ${runtimeDefects.submitFocusRestore.reason}`); + expect(await trigger.evaluate((element) => element === document.activeElement)).toBe(true); + }); + + test('keeps focus on a response dialog when the pending question-focus timer completes', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The timer race is characterized once in Chromium.'); + + await openParticipant(page); + await goNext(page); + const title = page.locator('#softModalTitle'); + await expect(title).toBeFocused(); + await waitInHarness(page, 550); + test.fail(true, `${runtimeDefects.modalQuestionFocusRace.localDefectId}: ${runtimeDefects.modalQuestionFocusRace.reason}`); + await expect(title).toBeFocused(); + }); +}); diff --git a/tests/e2e/module2PregnancyPaths.spec.js b/tests/e2e/module2PregnancyPaths.spec.js new file mode 100644 index 0000000..86454b0 --- /dev/null +++ b/tests/e2e/module2PregnancyPaths.spec.js @@ -0,0 +1,121 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { readLockedMarkdown, rerenderParticipant, treeAtPath } from './support/corpus.js'; + +const questName = 'D_745268907_V2'; +const currentPregnancy = 'D_849945160'; +const pregnancyCount = 'D_405571048'; +const pregnancyAge = 'D_968816827'; +const pregnancyOutcome = 'D_391951010'; +const pregnancySummary = 'PREGSUMMARY'; + +async function renderFromPersisted(page, { markdown, language, persistedData }) { + const result = await rerenderParticipant(page, { + markdown, + lang: language, + previousResults: { age: '45', yob: '1981' }, + persistedData, + }); + expect(result.result).toBe(true); +} + +test.describe('locked Module 2 pregnancy loop participant paths @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The production pregnancy path runs once in Chromium.'); + }); + + for (const language of ['en', 'es']) { + test(`keeps completed and current ${language} pregnancies isolated across summaries, Back, and resume`, async ({ page }) => { + const markdown = readLockedMarkdown('module2', language); + const age1 = `${pregnancyAge}_1_1`; + const outcome1 = `${pregnancyOutcome}_1_1`; + const summary1 = `${pregnancySummary}_1_1`; + const age2 = `${pregnancyAge}_2_2`; + const outcome2 = `${pregnancyOutcome}_2_2`; + const summary2 = `${pregnancySummary}_2_2`; + + await openParticipant(page, { + markdown, + lang: language, + previousResults: { age: '45', yob: '1981' }, + persistedData: { + [currentPregnancy]: '353358909', + [pregnancyCount]: '2', + treeJSON: treeAtPath([age1]), + }, + }); + + const firstAgeInput = activeQuestion(page, age1).locator('input[type="number"]'); + await expect(firstAgeInput).toHaveAttribute('data-min', '0'); + await expect(firstAgeInput).toHaveAttribute('data-max', '45'); + await firstAgeInput.fill('29'); + await firstAgeInput.blur(); + await goNext(page); + + await expect(activeQuestion(page, outcome1)).toBeVisible(); + await activeQuestion(page, outcome1).locator(`label[for="${outcome1}_306890578"]`).click(); + await goNext(page); + + const firstSummary = activeQuestion(page, summary1); + await expect(firstSummary).toBeVisible(); + await expect(firstSummary).toContainText('29'); + await expect(firstSummary).not.toContainText('{$'); + + await goNext(page); + await expect(activeQuestion(page, age2)).toBeVisible(); + const secondAgeInput = activeQuestion(page, age2).locator('input[type="number"]'); + await secondAgeInput.fill('31'); + await secondAgeInput.blur(); + await goNext(page); + + // The final pregnancy is the current pregnancy. Its age is collected, + // while outcome questions that only apply to completed pregnancies are skipped. + await expect(activeQuestion(page, summary2)).toBeVisible(); + await expect(page.locator(`#questionnaireRoot form.question.active#${outcome2}`)).toHaveCount(0); + await expect(activeQuestion(page, summary2)).toContainText('31'); + await expect(activeQuestion(page, summary2)).not.toContainText('{$'); + + await goBack(page); + await expect(activeQuestion(page, age2)).toBeVisible(); + await expect(activeQuestion(page, age2).locator('input[type="number"]')).toHaveValue('31'); + await goNext(page); + await expect(activeQuestion(page, summary2)).toBeVisible(); + + await flushHarness(page); + const completed = await harnessSnapshot(page); + expect(completed.state.survey).toMatchObject({ + [currentPregnancy]: '353358909', + [pregnancyCount]: '2', + [age1]: '29', + [outcome1]: '306890578', + [age2]: '31', + }); + expect(completed.state.survey).not.toHaveProperty(outcome2); + expect(completed.logs.storeCalls).toEqual(expect.arrayContaining([ + expect.objectContaining({ changes: expect.objectContaining({ [`${questName}.${age1}`]: '29' }) }), + expect.objectContaining({ changes: expect.objectContaining({ [`${questName}.${outcome1}`]: '306890578' }) }), + expect.objectContaining({ changes: expect.objectContaining({ [`${questName}.${age2}`]: '31' }) }), + ])); + + await renderFromPersisted(page, { + markdown, + language, + persistedData: { + ...completed.state.survey, + treeJSON: treeAtPath([age1, outcome1, summary1, age2, summary2]), + }, + }); + await expect(activeQuestion(page, summary2)).toBeVisible(); + await expect(activeQuestion(page, summary2)).toContainText('31'); + await expectHealthyHarness(page); + }); + } +}); diff --git a/tests/e2e/module4AddressPaths.spec.js b/tests/e2e/module4AddressPaths.spec.js new file mode 100644 index 0000000..cd85452 --- /dev/null +++ b/tests/e2e/module4AddressPaths.spec.js @@ -0,0 +1,237 @@ +import { readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, + readCanonicalFixture, + selectLabeledResponse, +} from './support/harness.js'; + +const DESKTOP_ENGINES = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); +const englishAddressFixture = readCanonicalFixture('module4AddressPaths.txt'); +const spanishAddressFixture = readCanonicalFixture('module4AddressPathsSpanish.txt'); +const corpusLock = JSON.parse(readFileSync(resolve('tests/corpus/lock.json'), 'utf8')); + +function readLockedModule4(locale) { + const entry = corpusLock.files.find((file) => file.module === 'module4' && file.locale === locale); + return readFileSync(resolve(corpusLock.cacheRoot, corpusLock.commit, entry.path), 'utf8'); +} + +function treeAt(questionId) { + return JSON.stringify({ + rootNode: { value: null, children: [{ value: questionId, children: [] }] }, + currentNode: questionId, + }); +} + +function treeThrough(previousQuestionId, currentQuestionId) { + return JSON.stringify({ + rootNode: { + value: null, + children: [{ value: previousQuestionId, children: [{ value: currentQuestionId, children: [] }] }], + }, + currentNode: currentQuestionId, + }); +} + +async function fillCompletePrimaryAddress(page) { + const question = activeQuestion(page, 'D_121490150'); + await question.locator('#D_255248624').fill('123'); + await question.locator('#D_945532934').fill('Main Street'); + await question.locator('#D_469838242').fill('Apt 4'); + await question.locator('#D_303500597').fill('Baltimore'); + await question.locator('#D_195068098').fill('Maryland'); + await question.locator('#D_202784871').fill('21201'); + const country = question.locator('#D_831127170'); + await country.fill('United States'); + // Address state is finalized by Quest's delegated focusout handler. Make + // that participant boundary explicit before exercising branching logic. + await country.blur(); +} + +async function continueWithoutAnswering(page, language = 'en') { + const name = language === 'es' ? 'Continuar Sin Responder' : 'Continue Without Answering'; + await page.getByRole('button', { name }).click(); +} + +test.describe('Module 4 residential-address paths @canonical @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(!DESKTOP_ENGINES.has(testInfo.project.name), 'Address paths run in the desktop browser matrix.'); + }); + + test('keeps a complete primary address out of backup and intersection fallbacks, then stores and reuses it', async ({ page }) => { + await openParticipant(page, { markdown: englishAddressFixture }); + await fillCompletePrimaryAddress(page); + await goNext(page); + + await expect(activeQuestion(page, 'HOMEADD4_1')).toBeVisible(); + await expect(activeQuestion(page, 'D_920576363')).toHaveCount(0); + await expect(activeQuestion(page, 'D_804504024')).toHaveCount(0); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Main Street'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Baltimore'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('United States'); + + await goNext(page); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + await expect(activeQuestion(page, 'D_574985342')).toContainText('Main Street'); + await expect(activeQuestion(page, 'D_574985342')).toContainText('Baltimore'); + + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + const completeAddress = { + D_255248624: '123', + D_945532934: 'Main Street', + D_469838242: 'Apt 4', + D_303500597: 'Baltimore', + D_195068098: 'Maryland', + D_202784871: '21201', + D_831127170: 'United States', + }; + expect(snapshot.state.survey.D_121490150).toEqual(completeAddress); + const addressStoreCall = snapshot.logs.storeCalls.find(({ changes }) => ( + Object.hasOwn(changes, 'D_716117817.D_121490150') + )); + expect(addressStoreCall).toBeTruthy(); + expect(addressStoreCall.changes['D_716117817.D_121490150']).toEqual(completeAddress); + expect(Object.keys(addressStoreCall.changes)).toEqual(expect.arrayContaining([ + 'D_716117817.D_121490150', + 'D_716117817.treeJSON', + ])); + await expectHealthyHarness(page); + }); + + test('uses secondary location fields and cross streets only for the no-street partition, then displays all entered values', async ({ page }) => { + await openParticipant(page, { markdown: englishAddressFixture }); + await goNext(page); + await continueWithoutAnswering(page); + await expect(activeQuestion(page, 'D_920576363')).toBeVisible(); + await activeQuestion(page, 'D_920576363').locator('#D_725583683').fill('Lakeview'); + await goNext(page); + await expect(activeQuestion(page, 'D_804504024')).toBeVisible(); + await activeQuestion(page, 'D_804504024').locator('#D_105043152').fill('First Street'); + await activeQuestion(page, 'D_804504024').locator('#D_543135391').fill('Second Avenue'); + await goNext(page); + + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('First Street'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Second Avenue'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Lakeview'); + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + expect(snapshot.state.survey).toMatchObject({ + D_920576363: { D_725583683: 'Lakeview' }, + D_804504024: { D_105043152: 'First Street', D_543135391: 'Second Avenue' }, + }); + await expectHealthyHarness(page); + }); + + test('uses missing-field backup for a partial street address without offering the cross-street fallback', async ({ page }) => { + await openParticipant(page, { markdown: englishAddressFixture }); + await activeQuestion(page, 'D_121490150').locator('#D_255248624').fill('44'); + await activeQuestion(page, 'D_121490150').locator('#D_945532934').fill('Partial Place'); + await goNext(page); + await expect(activeQuestion(page, 'D_920576363')).toBeVisible(); + await activeQuestion(page, 'D_920576363').locator('#D_725583683').fill('Lakeview'); + await goNext(page); + + await expect(activeQuestion(page, 'D_804504024')).toHaveCount(0); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Partial Place'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Lakeview'); + await expectHealthyHarness(page); + }); + + test('keeps an entirely blank address out of the intersection fallback and labels the confirmation as current address', async ({ page }) => { + await openParticipant(page, { markdown: englishAddressFixture }); + await goNext(page); + await continueWithoutAnswering(page); + await expect(activeQuestion(page, 'D_920576363')).toBeVisible(); + await goNext(page); + await continueWithoutAnswering(page); + + await expect(activeQuestion(page, 'D_804504024')).toHaveCount(0); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('current address'); + await expect(activeQuestion(page, 'HOMEADD4_1')).not.toContainText('First Street'); + await expectHealthyHarness(page); + }); + + test('restores primary compound values at the entered-address display and Back plus reset returns to fallback routing', async ({ page }) => { + await openParticipant(page, { + markdown: englishAddressFixture, + persistedData: { + D_121490150: { + D_255248624: '77', D_945532934: 'Restored Road', D_303500597: 'Durham', D_195068098: 'NC', D_202784871: '27701', D_831127170: 'US', + }, + treeJSON: treeThrough('D_121490150', 'HOMEADD4_1'), + }, + }); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Restored Road'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Durham'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('27701'); + + await goBack(page); + await expect(activeQuestion(page, 'D_121490150')).toBeVisible(); + await expect(activeQuestion(page, 'D_121490150').locator('#D_945532934')).toHaveValue('Restored Road'); + await activeQuestion(page, 'D_121490150').getByRole('button', { name: 'Reset this answer' }).click(); + await expect(activeQuestion(page, 'D_121490150').locator('#D_945532934')).toHaveValue(''); + await goNext(page); + await continueWithoutAnswering(page); + await expect(activeQuestion(page, 'D_920576363')).toBeVisible(); + await expectHealthyHarness(page); + }); + + test('keeps English and Spanish production-shaped address IDs and complete-address branching aligned', async ({ page }) => { + await openParticipant(page, { markdown: spanishAddressFixture, lang: 'es' }); + await fillCompletePrimaryAddress(page); + await goNext(page); + + await expect(activeQuestion(page, 'HOMEADD4_1')).toBeVisible(); + await expect(activeQuestion(page, 'D_920576363')).toHaveCount(0); + await expect(activeQuestion(page, 'D_804504024')).toHaveCount(0); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Esta es la información que nos dio para esta ubicación'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Main Street'); + await expect(activeQuestion(page, 'HOMEADD4_1')).toContainText('Baltimore'); + await expectHealthyHarness(page); + }); + + for (const { locale, language } of [ + { locale: 'English', language: 'en' }, + { locale: 'Spanish', language: 'es' }, + ]) { + test(`${locale} locked D_398762737 routes locality-only state to the duplicated-token intersection and blank state past it`, async ({ page }) => { + const markdown = readLockedModule4(language); + await openParticipant(page, { + markdown, + lang: language, + persistedData: { + D_444145120: { D_288498031: 'Lakeview' }, + treeJSON: treeAt('D_444145120'), + }, + }); + await expect(activeQuestion(page, 'D_444145120')).toBeVisible(); + await goNext(page); + await expect(activeQuestion(page, 'D_398762737')).toBeVisible(); + const runtimeCondition = decodeURIComponent( + await activeQuestion(page, 'D_398762737').getAttribute('displayif'), + ); + expect(runtimeCondition).toMatch(/^displayif=noneExist\("D_985267931","D_111275683"\) and someExist\(/); + + await openParticipant(page, { + markdown, + lang: language, + persistedData: { treeJSON: treeAt('D_444145120') }, + }); + await expect(activeQuestion(page, 'D_444145120')).toBeVisible(); + await goNext(page); + await continueWithoutAnswering(page, language); + await expect(activeQuestion(page, 'D_398762737')).toHaveCount(0); + await expect(activeQuestion(page, 'HOMEADD4_2')).toBeVisible(); + await expectHealthyHarness(page); + }); + } +}); diff --git a/tests/e2e/participantAsync.spec.js b/tests/e2e/participantAsync.spec.js new file mode 100644 index 0000000..c1b422f --- /dev/null +++ b/tests/e2e/participantAsync.spec.js @@ -0,0 +1,74 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goNext, + harnessSnapshot, + openParticipant, + selectLabeledResponse, +} from './support/harness.js'; + +const ASYNC_MAP = { + '[ASYNC?]': { func: 'loadSyntheticOptions', args: ['SEED'] }, +}; + +const ASYNC_HTML = ` + Choose the host-provided option. +
+ + +
+
+ + +
+`; + +const DESKTOP_ENGINES = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); + +test.describe('host-provided asynchronous questions @core @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(!DESKTOP_ENGINES.has(testInfo.project.name), 'Async host contract runs in each desktop browser engine.'); + }); + + test('passes prior answers and locale to the host, then persists the injected response', async ({ page }) => { + await openParticipant(page, { + fixture: 'asyncQuestion.txt', + asyncQuestionsMap: ASYNC_MAP, + asyncQuestionHtml: ASYNC_HTML, + asyncDelayMs: 75, + }); + await selectLabeledResponse(page, 'Clinical'); + await goNext(page); + + await expect(activeQuestion(page, 'ASYNC')).toBeVisible(); + await expect(activeQuestion(page).locator('#ASYNC_A')).toHaveCount(1); + const afterLoad = await harnessSnapshot(page); + expect(afterLoad.logs.asyncCalls).toHaveLength(1); + expect(afterLoad.logs.asyncCalls[0]).toMatchObject({ + func: 'loadSyntheticOptions', + args: ['1', 'en'], + }); + + await selectLabeledResponse(page, 'Host option B'); + await goNext(page); + await expect(activeQuestion(page, 'END')).toBeVisible(); + const finalSnapshot = await expectHealthyHarness(page); + expect(finalSnapshot.logs.storeCalls.some((call) => call.changes['TEST_ASYNC.ASYNC'] === 'B')).toBe(true); + }); + + test('renders an in-question error and logs host rejection without leaving the question', async ({ page }) => { + await openParticipant(page, { + fixture: 'asyncQuestion.txt', + asyncQuestionsMap: ASYNC_MAP, + asyncOutcomes: [{ kind: 'reject', message: 'Synthetic async failure' }], + }); + await selectLabeledResponse(page, 'Research'); + await goNext(page); + + await expect(activeQuestion(page, 'ASYNC')).toBeVisible(); + await expect(activeQuestion(page).locator('.validation-container')).toContainText('Error fetching question'); + const snapshot = await expectHealthyHarness(page, { allowErrors: true }); + expect(snapshot.logs.errors.some((entry) => entry.message.includes('Synthetic async failure'))).toBe(true); + }); +}); diff --git a/tests/e2e/participantControls.spec.js b/tests/e2e/participantControls.spec.js new file mode 100644 index 0000000..79ae14d --- /dev/null +++ b/tests/e2e/participantControls.spec.js @@ -0,0 +1,212 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goNext, + harnessSnapshot, + openParticipant, + selectLabeledResponse, +} from './support/harness.js'; + +const CONTROL_PROJECTS = new Set([ + 'chromium-desktop', + 'firefox-desktop', + 'webkit-desktop', + 'chromium-windows-ua', +]); + +test.describe('participant controls @core @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !CONTROL_PROJECTS.has(testInfo.project.name), + 'Canonical control walks run in the three desktop engines and Windows user-agent branch.', + ); + }); + + test('loads a checked-in synthetic fixture through the manual-test query', async ({ page }, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'One browser verifies the manual harness entry point.'); + + await page.goto('/tests/harness/participant.html?fixture=runtimeControls.txt'); + await page.waitForFunction(() => document.querySelector('#questionnaireRoot form.question.active#CHOICE')); + await expect(activeQuestion(page, 'CHOICE')).toContainText('Which color do you prefer?'); + const snapshot = await expectHealthyHarness(page); + expect(snapshot.logs.renders).toHaveLength(1); + }); + + test('answers common controls, persists deltas, and submits the survey', async ({ page }) => { + await openParticipant(page); + + await expect(activeQuestion(page, 'CHOICE')).toBeVisible(); + await expect(activeQuestion(page).getByRole('button', { name: 'Back to the previous question' })).toHaveCount(0); + await selectLabeledResponse(page, 'Blue'); + await goNext(page); + + await expect(activeQuestion(page, 'CHECKS')).toBeVisible(); + await selectLabeledResponse(page, 'Email'); + await selectLabeledResponse(page, 'Text message'); + await goNext(page); + + await expect(activeQuestion(page, 'TEXT')).toBeVisible(); + await activeQuestion(page).locator('#nickname').fill('Casey'); + await goNext(page); + + await expect(activeQuestion(page, 'NUMBER')).toBeVisible(); + await activeQuestion(page).locator('#visit_count').fill('3'); + await goNext(page); + + await expect(activeQuestion(page, 'STATE')).toBeVisible(); + const stateSelect = activeQuestion(page).locator('#home_state'); + await stateSelect.focus(); + await stateSelect.selectOption('MD'); + await stateSelect.blur(); + await goNext(page); + + await expect(activeQuestion(page, 'DATE')).toBeVisible(); + await activeQuestion(page).locator('#visit_date').fill('2026-01-15'); + await goNext(page); + + await expect(activeQuestion(page, 'TIME')).toBeVisible(); + await activeQuestion(page).locator('#visit_time').fill('09:30'); + await goNext(page); + + await expect(activeQuestion(page, 'END')).toBeVisible(); + await activeQuestion(page).getByRole('button', { name: 'Submit your survey' }).click(); + await expect(page.locator('#submitModal')).toHaveClass(/show/); + await expect(page.locator('#submitModalTitle')).toBeFocused(); + await page.locator('#submitModalButton').click(); + + const snapshot = await expectHealthyHarness(page); + const changedKeys = snapshot.logs.storeCalls.flatMap((call) => Object.keys(call.changes)); + expect(changedKeys).toEqual(expect.arrayContaining([ + 'TEST_RUNTIME.CHOICE', + 'TEST_RUNTIME.CHECKS', + 'TEST_RUNTIME.TEXT', + 'TEST_RUNTIME.NUMBER', + 'TEST_RUNTIME.STATE', + 'TEST_RUNTIME.DATE', + 'TEST_RUNTIME.TIME', + 'TEST_RUNTIME.COMPLETED', + 'TEST_RUNTIME.COMPLETED_TS', + 'TEST_RUNTIME.treeJSON', + ])); + expect(snapshot.logs.storeCalls.at(-1).changes['TEST_RUNTIME.COMPLETED']).toBe(true); + expect(snapshot.state.survey).toMatchObject({ + CHOICE: '1', + CHECKS: ['1', '2'], + TEXT: 'Casey', + NUMBER: '3', + STATE: 'MD', + DATE: '2026-01-15', + TIME: '09:30', + }); + }); + + test('blocks an out-of-range number and clears the error after correction', async ({ page }) => { + await openParticipant(page, { fixture: 'validation.txt' }); + const number = activeQuestion(page, 'BOUNDED').locator('#bounded'); + + await number.fill('9'); + await goNext(page); + await expect(activeQuestion(page, 'BOUNDED')).toBeVisible(); + await expect(activeQuestion(page).locator('.validation-container')).toContainText('Value must be less than or equal to 3'); + + await number.fill('2'); + await number.blur(); + await expect(activeQuestion(page).locator('.validation-container')).toHaveCount(0); + await goNext(page); + await expect(activeQuestion(page, 'END')).toBeVisible(); + await expectHealthyHarness(page); + }); + + test('delegated keyboard submits activate Next, Reset, and Back with Enter and Space @windows-a11y', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + + async function pressAction(name, key, expectedQuestionId) { + const button = activeQuestion(page).getByRole('button', { name }); + await button.focus(); + await expect(button).toBeFocused(); + await page.keyboard.press(key); + + const question = activeQuestion(page, expectedQuestionId); + await expect(question).toBeVisible(); + if (name !== 'Reset this answer') { + await expect(question.locator('.screen-reader-focus')).toBeFocused(); + } + } + + await selectLabeledResponse(page, 'Yes'); + await pressAction('Next question', 'Enter', 'DETAIL'); + + const detail = activeQuestion(page, 'DETAIL').locator('#detail'); + await detail.fill('Reset by Enter'); + await detail.blur(); + await pressAction('Reset this answer', 'Enter', 'DETAIL'); + await expect(detail).toHaveValue(''); + expect((await harnessSnapshot(page)).state.survey.DETAIL).toBeUndefined(); + + await detail.fill('Reset by Space'); + await detail.blur(); + await pressAction('Reset this answer', 'Space', 'DETAIL'); + await expect(detail).toHaveValue(''); + expect((await harnessSnapshot(page)).state.survey.DETAIL).toBeUndefined(); + + await detail.fill('Keyboard detail'); + await detail.blur(); + await pressAction('Next question', 'Space', 'SUMMARY'); + + await pressAction('Back to the previous question', 'Enter', 'DETAIL'); + await expect(activeQuestion(page, 'DETAIL').locator('#detail')).toHaveValue('Keyboard detail'); + + await pressAction('Back to the previous question', 'Space', 'PATH'); + await expect(activeQuestion(page, 'PATH').locator('#PATH_1')).toBeChecked(); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.state.survey).toMatchObject({ PATH: '1' }); + expect(snapshot.state.survey.DETAIL).toBeUndefined(); + + const keyActions = snapshot.logs.events + .filter((event) => event.type === 'keydown' && ['Enter', ' '].includes(event.key)) + .map((event) => ({ + key: event.key === ' ' ? 'Space' : event.key, + action: event.target.className?.split(' ').find((name) => ( + ['next', 'reset', 'previous'].includes(name) + )), + })); + expect(keyActions).toEqual(expect.arrayContaining([ + { key: 'Enter', action: 'next' }, + { key: 'Space', action: 'next' }, + { key: 'Enter', action: 'reset' }, + { key: 'Space', action: 'reset' }, + { key: 'Enter', action: 'previous' }, + { key: 'Space', action: 'previous' }, + ])); + + const delegatedSubmits = snapshot.logs.events.filter((event) => ( + event.type === 'submit' + && ['PATH', 'DETAIL', 'SUMMARY'].includes(event.target.id) + )); + expect(delegatedSubmits).toHaveLength(6); + expect(delegatedSubmits.every((event) => event.defaultPrevented)).toBe(true); + expect(snapshot.logs.host.keydownCount).toBeGreaterThanOrEqual(6); + expect(snapshot.logs.errors).toEqual([]); + }); + + test('uses prefetched text while loading the URL-signaled Quest styles from locked local files', async ({ page, diagnostics }) => { + const questionnaireUrl = 'https://questionnaire.test/prod/module.txt'; + await openParticipant(page, { url: questionnaireUrl, questVersion: '2.0.0-test' }); + + await expect(activeQuestion(page, 'CHOICE')).toBeVisible(); + await expect(page.locator('head link[rel="stylesheet"][href^="blob:"]')).toHaveCount(2); + expect(diagnostics.fulfilledExternalRequests).toEqual(expect.arrayContaining([ + 'https://episphere.github.io/quest-dev/ActiveLogic.css', + 'https://episphere.github.io/quest-dev/Style1.css', + ])); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.logs.renders[0].config).toMatchObject({ + url: questionnaireUrl, + questVersion: '2.0.0-test', + }); + expect(snapshot.logs.retrieveCalls).toHaveLength(1); + }); +}); diff --git a/tests/e2e/participantNavigationState.spec.js b/tests/e2e/participantNavigationState.spec.js new file mode 100644 index 0000000..caa686e --- /dev/null +++ b/tests/e2e/participantNavigationState.spec.js @@ -0,0 +1,272 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, + readCanonicalFixture, + selectLabeledResponse, +} from './support/harness.js'; + +const DESKTOP_ENGINES = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); + +function treeAt(questionId) { + return JSON.stringify({ + rootNode: { value: null, children: [{ value: questionId, children: [] }] }, + currentNode: questionId, + }); +} + +test.describe('participant navigation and state @core @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(!DESKTOP_ENGINES.has(testInfo.project.name), 'State and error flows run in each desktop browser engine.'); + }); + + test('takes an explicit skip target and Back returns along the visited path', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'No'); + await goNext(page); + + await expect(activeQuestion(page, 'SUMMARY')).toBeVisible(); + await goBack(page); + await expect(activeQuestion(page, 'PATH')).toBeVisible(); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.logs.storeCalls[0].changes['TEST_NAV.PATH']).toBe('0'); + }); + + test('executes default, reset, and no-response transitions through delegated controls', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationBoundaries.txt' }); + await goNext(page); + await expect(activeQuestion(page, 'PATH')).toBeVisible(); + + await selectLabeledResponse(page, 'Explicit route'); + await activeQuestion(page).getByRole('button', { name: 'Reset this answer' }).click(); + await expect(activeQuestion(page).locator('input[type="radio"]:checked')).toHaveCount(0); + + await goNext(page); + await page.getByRole('button', { name: 'Continue Without Answering' }).click(); + await expect(activeQuestion(page, 'NO_RESPONSE_TARGET')).toBeVisible(); + await goNext(page); + await expect(activeQuestion(page, 'END')).toBeVisible(); + await expectHealthyHarness(page); + }); + + test('executes explicit and sequential alternatives on fresh pages', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationBoundaries.txt' }); + await goNext(page); + await selectLabeledResponse(page, 'Explicit route'); + await goNext(page); + await expect(activeQuestion(page, 'EXPLICIT_TARGET')).toBeVisible(); + + await page.reload(); + await page.waitForFunction(() => window.questHarness?.ready === true); + await openParticipant(page, { fixture: 'navigationBoundaries.txt' }); + await goNext(page); + await selectLabeledResponse(page, 'Sequential route'); + await goNext(page); + await expect(activeQuestion(page, 'SEQUENTIAL_TARGET')).toBeVisible(); + await expectHealthyHarness(page); + }); + + for (const iterationCount of [0, 1, 2, 25]) { + test(`executes exactly ${iterationCount} loop iteration(s) without collapsing unrolled IDs`, async ({ page }) => { + await openParticipant(page, { fixture: 'loopBoundaries.txt' }); + await activeQuestion(page, 'D_900000001').locator('#D_900000001').fill(String(iterationCount)); + await goNext(page); + + const observedLoopIds = []; + while (await activeQuestion(page).getAttribute('id') !== 'END') { + const questionId = await activeQuestion(page).getAttribute('id'); + expect(questionId).toMatch(/^ITEM_\d+_\d+$/); + observedLoopIds.push(questionId); + await selectLabeledResponse(page, 'Continue'); + await goNext(page); + } + + expect(observedLoopIds).toHaveLength(iterationCount); + expect(new Set(observedLoopIds).size).toBe(iterationCount); + expect(observedLoopIds).toEqual(Array.from({ length: iterationCount }, (_, index) => ( + `ITEM_${index + 1}_${index + 1}` + ))); + await expectHealthyHarness(page); + }); + } + + test('Back preserves stable unrolled loop IDs from iteration 2 to iteration 1', async ({ page }) => { + await openParticipant(page, { fixture: 'loopBoundaries.txt' }); + await activeQuestion(page, 'D_900000001').locator('#D_900000001').fill('2'); + await goNext(page); + await expect(activeQuestion(page, 'ITEM_1_1')).toBeVisible(); + await selectLabeledResponse(page, 'Continue'); + await goNext(page); + await expect(activeQuestion(page, 'ITEM_2_2')).toBeVisible(); + + await goBack(page); + await expect(activeQuestion(page, 'ITEM_1_1')).toBeVisible(); + await expect(activeQuestion(page).locator('input[type="radio"]:checked')).toHaveValue('1'); + await expectHealthyHarness(page); + }); + + test('restores the exact unrolled loop iteration from persisted host state', async ({ page }) => { + await openParticipant(page, { fixture: 'loopBoundaries.txt' }); + await activeQuestion(page, 'D_900000001').locator('#D_900000001').fill('2'); + await goNext(page); + await selectLabeledResponse(page, 'Continue'); + await goNext(page); + await expect(activeQuestion(page, 'ITEM_2_2')).toBeVisible(); + await selectLabeledResponse(page, 'Continue'); + await goNext(page); + await expect(activeQuestion(page, 'END')).toBeVisible(); + await flushHarness(page); + + const beforeReload = await harnessSnapshot(page); + expect(beforeReload.state.survey).toMatchObject({ D_900000001: '2', ITEM_1_1: '1', ITEM_2_2: '1' }); + expect(beforeReload.state.survey.treeJSON).toContain('ITEM_2_2'); + + await page.reload(); + await page.waitForFunction(() => window.questHarness?.ready === true); + await page.evaluate(({ markdown, persistedData }) => window.questHarness.render({ markdown, persistedData }), { + markdown: readCanonicalFixture('loopBoundaries.txt'), + persistedData: beforeReload.state.survey, + }); + + await expect(activeQuestion(page, 'ITEM_2_2')).toBeVisible(); + const restored = await harnessSnapshot(page); + expect(restored.state.survey).toMatchObject({ D_900000001: '2', ITEM_1_1: '1', ITEM_2_2: '1' }); + await expect(activeQuestion(page).locator('input[type="radio"]:checked')).toHaveValue('1'); + await expectHealthyHarness(page); + }); + + test('restores answers and navigation tree from host-retrieved state after reload', async ({ page }) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + await expect(activeQuestion(page, 'DETAIL')).toBeVisible(); + await activeQuestion(page).locator('#detail').fill('Follow up'); + await goNext(page); + await expect(activeQuestion(page, 'SUMMARY')).toBeVisible(); + await flushHarness(page); + + const beforeReload = await harnessSnapshot(page); + expect(beforeReload.state.survey).toMatchObject({ PATH: '1', DETAIL: 'Follow up' }); + + await page.reload(); + await page.waitForFunction(() => window.questHarness?.ready === true); + await page.evaluate(({ markdown, persistedData }) => window.questHarness.render({ markdown, persistedData }), { + markdown: readCanonicalFixture('navigationState.txt'), + persistedData: beforeReload.state.survey, + }); + + const restored = await harnessSnapshot(page); + expect(restored.state.survey).toMatchObject({ PATH: '1', DETAIL: 'Follow up' }); + expect(['DETAIL', 'SUMMARY']).toContain(restored.activeQuestionId); + await expectHealthyHarness(page); + }); + + test('advances before a delayed successful store operation settles', async ({ page }) => { + await openParticipant(page, { + fixture: 'navigationState.txt', + storeMode: 'delayed', + hostDelayMs: 500, + }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + + expect(await activeQuestion(page).getAttribute('id')).toBe('DETAIL'); + const pendingSnapshot = await harnessSnapshot(page); + expect(pendingSnapshot.logs.storeCalls).toHaveLength(1); + expect(pendingSnapshot.logs.storeCalls[0].outcome).toMatchObject({ + kind: 'resolve', + delayMs: 500, + value: { code: 200 }, + }); + + await flushHarness(page); + await expect(activeQuestion(page, 'DETAIL')).toBeVisible(); + await expectHealthyHarness(page); + }); + + for (const storeFailure of [ + { + label: 'non-200 result', + config: { storeMode: 'non200' }, + }, + { + label: 'rejected operation', + config: { storeMode: 'rejected' }, + }, + ]) { + test(`reverts navigation and reports the host error after a ${storeFailure.label}`, async ({ page }) => { + await openParticipant(page, { + fixture: 'navigationState.txt', + ...storeFailure.config, + }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + await flushHarness(page); + + await expect(activeQuestion(page, 'PATH')).toBeVisible(); + await expect(page.locator('#storeErrorModal')).toHaveClass(/show/); + const snapshot = await expectHealthyHarness(page, { allowErrors: true }); + expect(snapshot.logs.errors.some((entry) => entry.message.includes('syncToStore'))).toBe(true); + expect(snapshot.logs.storeCalls).toHaveLength(1); + expect(snapshot.logs.storeCalls[0].outcome.kind).toBe( + storeFailure.config.storeMode === 'rejected' ? 'reject' : 'resolve', + ); + }); + } + + test('waits for delayed retrieve data and restores it before activating the survey', async ({ page }) => { + await openParticipant(page, { + fixture: 'navigationState.txt', + retrieveDelayMs: 150, + retrieveResult: { + data: { + TEST_NAV: { PATH: '1', treeJSON: treeAt('PATH') }, + }, + }, + }); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.logs.retrieveCalls).toHaveLength(1); + expect(snapshot.state.survey).toMatchObject({ PATH: '1' }); + await expect(activeQuestion(page, 'PATH').locator('#PATH_1')).toBeChecked(); + }); + + test('starts a clean survey and logs a rejected retrieve operation', async ({ page }) => { + await openParticipant(page, { + fixture: 'navigationState.txt', + retrieveError: 'Synthetic retrieve rejection', + }); + + await expect(activeQuestion(page, 'PATH')).toBeVisible(); + await expect(activeQuestion(page).locator('input[type="radio"]:checked')).toHaveCount(0); + const snapshot = await expectHealthyHarness(page, { allowErrors: true }); + expect(snapshot.logs.retrieveCalls).toHaveLength(1); + expect(snapshot.logs.errors.some((entry) => ( + entry.message.includes('Error fetching retrieve function and css') + && entry.message.includes('Synthetic retrieve rejection') + ))).toBe(true); + }); + + test('characterizes current unwrapping of retrieve data that carries a non-200 code', async ({ page }) => { + await openParticipant(page, { + fixture: 'navigationState.txt', + retrieveResult: { + code: 503, + data: { + TEST_NAV: { PATH: '0', treeJSON: treeAt('PATH') }, + }, + }, + }); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.logs.retrieveCalls).toHaveLength(1); + expect(snapshot.state.survey).toMatchObject({ PATH: '0' }); + await expect(activeQuestion(page, 'PATH').locator('#PATH_0')).toBeChecked(); + }); +}); diff --git a/tests/e2e/popoverAccessibility.spec.js b/tests/e2e/popoverAccessibility.spec.js new file mode 100644 index 0000000..fed6514 --- /dev/null +++ b/tests/e2e/popoverAccessibility.spec.js @@ -0,0 +1,46 @@ +import { test, expect } from './support/test.js'; +import { activeQuestion, expectHealthyHarness, openParticipant } from './support/harness.js'; + +const DESKTOP_ENGINES = new Set([ + 'chromium-desktop', + 'firefox-desktop', + 'webkit-desktop', + 'chromium-windows-ua', +]); + +const POPOVER_MARKDOWN = `{"name":"TEST_POPOVER_A11Y"} + +[PLAIN] Please read the following survey help. +|popup|More information|Help title|Synthetic help text|`; + +test.describe('production-shaped popover accessibility @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !DESKTOP_ENGINES.has(testInfo.project.name), + 'Keyboard popover behavior is checked in each desktop engine and the Windows user-agent branch.', + ); + }); + + test('reveals help on keyboard focus, exposes its content, and dismisses on focus departure', async ({ page }) => { + await openParticipant(page, { markdown: POPOVER_MARKDOWN }); + + const question = activeQuestion(page, 'PLAIN'); + await expect(question.locator('legend')).toContainText('Please read the following survey help.'); + + const trigger = question.getByRole('button', { name: 'More information' }); + await expect(trigger).toBeVisible(); + await trigger.focus(); + await expect(trigger).toBeFocused(); + + const popover = page.locator('.popover').filter({ hasText: 'Synthetic help text' }); + await expect(popover).toBeVisible(); + await expect(popover).toHaveAttribute('role', 'tooltip'); + await expect(popover).toContainText('Help title'); + await expect(popover).toContainText('Synthetic help text'); + await expect(trigger).toHaveAttribute('aria-describedby', await popover.getAttribute('id')); + + await page.locator('#host-after').focus(); + await expect(popover).not.toBeVisible(); + await expectHealthyHarness(page); + }); +}); diff --git a/tests/e2e/productionCompoundForms.spec.js b/tests/e2e/productionCompoundForms.spec.js new file mode 100644 index 0000000..d8a2f88 --- /dev/null +++ b/tests/e2e/productionCompoundForms.spec.js @@ -0,0 +1,173 @@ +import path from 'node:path'; + +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { accessibilityDefects } from '../knownDefects/registry.js'; +import { + readLockedMarkdown, + repositoryRoot, + rerenderParticipant, + treeAt, +} from './support/corpus.js'; + +const dietQuestion = 'D_916948380'; +const dietVegetables = 'D_970075000'; +const dietFruit = 'D_724001040'; +const module4Name = 'D_716117817'; +const commuteModes = 'D_421586693'; +const commuteDuration = 'D_733638576'; +const carDuration = 'D_583216333'; +const taxiDuration = 'D_920653797'; +const commuteFollowUpImage = 'https://user-images.githubusercontent.com/64271614/86169815-34d86f80-bae8-11ea-98a6-1b3de33fedf0.png'; +const localImageAsset = path.join(repositoryRoot, 'tests/e2e/assets/FemaleBaldness1.png'); + +async function chooseRadio(question, name, value) { + await question.locator(`label[for="${name}_${value}"]`).click(); +} + +test.describe('locked production compound-response forms @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'Production compound flows run once in Chromium.'); + }); + + test('Diet Screener keeps radio subgroups independent through partial completion, Back, and reload', async ({ page }) => { + const markdown = readLockedMarkdown('moduleDietScreener'); + await openParticipant(page, { + markdown, + persistedData: { treeJSON: treeAt(dietQuestion, 'INTRO_SRVDSQ') }, + }); + + const question = activeQuestion(page, dietQuestion); + await expect(question).toBeVisible(); + expect(await question.locator('input[type="radio"]').evaluateAll((inputs) => ( + new Set(inputs.map((input) => input.name)).size + ))).toBe(20); + + await chooseRadio(question, dietVegetables, '192247286'); + await chooseRadio(question, dietFruit, '351464854'); + await expect(question.locator(`#${dietVegetables}_192247286`)).toBeChecked(); + await expect(question.locator(`#${dietFruit}_351464854`)).toBeChecked(); + + // Diet Screener allows a participant to continue after a partial page. + // Preserve the two independent values before checking its Back/reload path. + await goNext(page); + await expect(page.getByRole('button', { name: 'Submit your survey' })).toBeVisible(); + + await flushHarness(page); + const partial = await harnessSnapshot(page); + expect(partial.state.survey).toMatchObject({ + [dietQuestion]: { + [dietVegetables]: '192247286', + [dietFruit]: '351464854', + }, + }); + + await page.getByRole('button', { name: 'Back to the previous section' }).click(); + await expect(activeQuestion(page, dietQuestion)).toBeVisible(); + await expect(activeQuestion(page, dietQuestion).locator(`#${dietVegetables}_192247286`)).toBeChecked(); + await expect(activeQuestion(page, dietQuestion).locator(`#${dietFruit}_351464854`)).toBeChecked(); + + await rerenderParticipant(page, { + markdown, + lang: 'en', + persistedData: { + ...partial.state.survey, + treeJSON: treeAt(dietQuestion, 'INTRO_SRVDSQ'), + }, + }); + const restored = activeQuestion(page, dietQuestion); + await expect(restored.locator(`#${dietVegetables}_192247286`)).toBeChecked(); + await expect(restored.locator(`#${dietFruit}_351464854`)).toBeChecked(); + await expect(restored.locator(`#${dietVegetables}_351464854`)).not.toBeChecked(); + await expectHealthyHarness(page); + }); + + test('Module 4 commute duration limits visible subgroups to selected modes and persists them independently', async ({ page }) => { + const markdown = readLockedMarkdown('module4'); + const selectedModes = ['767755239', '385609081']; + // The valid selected-mode transition leads to a production image. It is + // unrelated to this contract, so retain the suite's boundary by + // serving an existing checked-in PNG in place of the remote asset. + await page.route(commuteFollowUpImage, (route) => route.fulfill({ + status: 200, + contentType: 'image/png', + path: localImageAsset, + })); + await openParticipant(page, { + markdown, + persistedData: { + [commuteModes]: selectedModes, + treeJSON: treeAt(commuteDuration, commuteModes), + }, + }); + + const question = activeQuestion(page, commuteDuration); + await expect(question).toBeVisible(); + await expect(question.locator(`input[name="${carDuration}"]`)).toHaveCount(5); + await expect(question.locator(`input[name="${taxiDuration}"]`)).toHaveCount(5); + // Quest visually hides native choice inputs in every response. Assert the + // response containers instead, which distinguishes suppressed mode rows. + await expect(question.locator(`input[name="${carDuration}"]`).first().locator('xpath=..')).toBeVisible(); + await expect(question.locator(`input[name="${taxiDuration}"]`).first().locator('xpath=..')).toBeVisible(); + await expect(question.locator('input[name="D_843066684"]').first().locator('xpath=..')).toBeHidden(); + + await chooseRadio(question, carDuration, '248303092'); + await chooseRadio(question, taxiDuration, '638092100'); + await goNext(page); + await expect(activeQuestion(page, 'D_166943843')).toBeVisible(); + + await flushHarness(page); + const completed = await harnessSnapshot(page); + const expectedDurations = { + [carDuration]: '248303092', + [taxiDuration]: '638092100', + }; + expect(completed.state.survey).toMatchObject({ [commuteDuration]: expectedDurations }); + expect(completed.logs.storeCalls.some(({ changes }) => ( + JSON.stringify(changes[`${module4Name}.${commuteDuration}`]) === JSON.stringify(expectedDurations) + ))).toBe(true); + + await goBack(page); + const returned = activeQuestion(page, commuteDuration); + await expect(returned.locator(`#${carDuration}_248303092`)).toBeChecked(); + await expect(returned.locator(`#${taxiDuration}_638092100`)).toBeChecked(); + + await rerenderParticipant(page, { + markdown, + lang: 'en', + persistedData: { + ...completed.state.survey, + treeJSON: treeAt(commuteDuration, commuteModes), + }, + }); + const restored = activeQuestion(page, commuteDuration); + await expect(restored.locator(`#${carDuration}_248303092`)).toBeChecked(); + await expect(restored.locator(`#${taxiDuration}_638092100`)).toBeChecked(); + await expect(restored.locator('input[name="D_843066684"]').first().locator('xpath=..')).toBeHidden(); + await expectHealthyHarness(page); + }); + + test('Diet Screener choices expose both the food subgroup and answer in their accessible names @known-defect', async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('moduleDietScreener'), + persistedData: { treeJSON: treeAt(dietQuestion) }, + }); + + const question = activeQuestion(page, dietQuestion); + await expect(question).toBeVisible(); + expect(await question.locator('input[type="radio"]').count()).toBeGreaterThan(0); + test.fail(true, `${accessibilityDefects.compoundQuestionContext.localDefectId}: ${accessibilityDefects.compoundQuestionContext.reason}`); + await expect(question.getByRole('radio', { name: /Vegetables.*1 per week|1 per week.*Vegetables/ })) + .toHaveCount(1, { timeout: 1_000 }); + await expect(question.getByRole('radio', { name: /Fruit.*1 per day|1 per day.*Fruit/ })) + .toHaveCount(1, { timeout: 1_000 }); + }); +}); diff --git a/tests/e2e/productionFanoutXor.spec.js b/tests/e2e/productionFanoutXor.spec.js new file mode 100644 index 0000000..afc6ab0 --- /dev/null +++ b/tests/e2e/productionFanoutXor.spec.js @@ -0,0 +1,207 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { readLockedMarkdown, rerenderParticipant, treeAtPath } from './support/corpus.js'; + +const mouthwashQuestion = 'D_479143504'; +const toothbrushFrequency = 'D_498984275'; +const mouthwashProducts = 'D_406270109'; +const alcoholMouthwashFrequency = 'D_349659426'; +const alcoholFreeMouthwashFrequency = 'D_766370065'; + +const surgeries = 'D_729984625'; +const tonsilSurgery = 'D_675055475'; +const gallbladderSurgery = 'D_250003172'; +const ageAtSurgery = 'D_623218391'; +const yearOfSurgery = 'D_802622485'; +const tonsilXor = 'SRVSCR_TONSILS_V1R0'; +const gallbladderXor = 'SRVSCR_GALLREM_V1R0'; + +test.describe('locked production checkbox fan-out and XOR state @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'Production branch paths run once in Chromium.'); + }); + + test('queues selected oral-hygiene and nested mouthwash routes once, in authored order, and restores both checkbox arrays', async ({ page }) => { + const markdown = readLockedMarkdown('moduleMouthwash'); + await openParticipant(page, { + markdown, + persistedData: { treeJSON: treeAtPath([mouthwashQuestion]) }, + }); + + const oralHygiene = activeQuestion(page, mouthwashQuestion); + await oralHygiene.locator(`label[for="${mouthwashQuestion}_203919683"]`).click(); + await oralHygiene.locator(`label[for="${mouthwashQuestion}_390351864"]`).click(); + await goNext(page); + await expect(activeQuestion(page, toothbrushFrequency)).toBeVisible(); + + await activeQuestion(page, toothbrushFrequency).locator(`label[for="${toothbrushFrequency}_858624942"]`).click(); + await goNext(page); + await expect(activeQuestion(page, mouthwashProducts)).toBeVisible(); + + const products = activeQuestion(page, mouthwashProducts); + await products.locator(`label[for="${mouthwashProducts}_950773275"]`).click(); + await products.locator(`label[for="${mouthwashProducts}_762727133"]`).click(); + await goNext(page); + await expect(activeQuestion(page, alcoholMouthwashFrequency)).toBeVisible(); + + await activeQuestion(page, alcoholMouthwashFrequency).locator(`label[for="${alcoholMouthwashFrequency}_858624942"]`).click(); + await goNext(page); + await expect(activeQuestion(page, alcoholFreeMouthwashFrequency)).toBeVisible(); + + await activeQuestion(page, alcoholFreeMouthwashFrequency).locator(`label[for="${alcoholFreeMouthwashFrequency}_858624942"]`).click(); + await goNext(page); + await flushHarness(page); + const completed = await harnessSnapshot(page); + expect(completed.state.survey).toMatchObject({ + [mouthwashQuestion]: ['203919683', '390351864'], + [toothbrushFrequency]: '858624942', + [mouthwashProducts]: ['950773275', '762727133'], + [alcoholMouthwashFrequency]: '858624942', + [alcoholFreeMouthwashFrequency]: '858624942', + }); + expect(JSON.parse(completed.state.survey.treeJSON).currentNode).toBe(alcoholFreeMouthwashFrequency); + + // Returning through the queue must not duplicate or skip a selected route. + await goBack(page); + await expect(activeQuestion(page, alcoholFreeMouthwashFrequency)).toBeVisible(); + await goBack(page); + await expect(activeQuestion(page, alcoholMouthwashFrequency)).toBeVisible(); + await goBack(page); + await expect(activeQuestion(page, mouthwashProducts)).toBeVisible(); + await expect(activeQuestion(page, mouthwashProducts).locator(`#${mouthwashProducts}_950773275`)).toBeChecked(); + await expect(activeQuestion(page, mouthwashProducts).locator(`#${mouthwashProducts}_762727133`)).toBeChecked(); + + const rerendered = await rerenderParticipant(page, { + markdown, + persistedData: { + ...completed.state.survey, + treeJSON: treeAtPath([mouthwashQuestion, toothbrushFrequency, mouthwashProducts, alcoholMouthwashFrequency, alcoholFreeMouthwashFrequency]), + }, + }); + expect(rerendered.result).toBe(true); + await expect(activeQuestion(page, alcoholFreeMouthwashFrequency)).toBeVisible(); + await goBack(page); + await goBack(page); + await expect(activeQuestion(page, mouthwashProducts)).toBeVisible(); + await expect(activeQuestion(page, mouthwashProducts).locator(`#${mouthwashProducts}_950773275`)).toBeChecked(); + await expect(activeQuestion(page, mouthwashProducts).locator(`#${mouthwashProducts}_762727133`)).toBeChecked(); + await expectHealthyHarness(page); + }); + + test('rebuilds a queued multi-select route after Back removes one selected branch', async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('moduleMouthwash'), + persistedData: { treeJSON: treeAtPath([mouthwashQuestion]) }, + }); + + const question = activeQuestion(page, mouthwashQuestion); + await question.locator(`label[for="${mouthwashQuestion}_203919683"]`).click(); + await question.locator(`label[for="${mouthwashQuestion}_390351864"]`).click(); + await goNext(page); + await expect(activeQuestion(page, toothbrushFrequency)).toBeVisible(); + + // The first Next has already materialized both selected targets in the + // queue. Return to the driver, remove only the first route, and require + // Quest to rebuild the queue from the updated checkbox array. + await goBack(page); + const returned = activeQuestion(page, mouthwashQuestion); + await expect(returned.locator(`#${mouthwashQuestion}_203919683`)).toBeChecked(); + await expect(returned.locator(`#${mouthwashQuestion}_390351864`)).toBeChecked(); + await returned.locator(`label[for="${mouthwashQuestion}_203919683"]`).click(); + await expect(returned.locator(`#${mouthwashQuestion}_203919683`)).not.toBeChecked(); + await expect(returned.locator(`#${mouthwashQuestion}_390351864`)).toBeChecked(); + await goNext(page); + await expect(activeQuestion(page, mouthwashProducts)).toBeVisible(); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.state.survey[mouthwashQuestion]).toEqual(['390351864']); + expect(snapshot.state.survey).not.toHaveProperty(toothbrushFrequency); + expect(snapshot.state.survey.treeJSON).not.toContain(toothbrushFrequency); + }); + + test('keeps repeated age/year controls parent-scoped, XOR-exclusive, bounded, and restorable across two surgery paths', async ({ page }) => { + const markdown = readLockedMarkdown('moduleCancerScreeningHistory'); + await openParticipant(page, { + markdown, + previousResults: { age: '45', yob: '1979' }, + persistedData: { treeJSON: treeAtPath([surgeries]) }, + }); + + const surgeryQuestion = activeQuestion(page, surgeries); + await surgeryQuestion.locator(`label[for="${surgeries}_797189152"]`).click(); + await surgeryQuestion.locator(`label[for="${surgeries}_633546100"]`).click(); + await goNext(page); + await expect(activeQuestion(page, tonsilSurgery)).toBeVisible(); + + const tonsil = activeQuestion(page, tonsilSurgery); + const tonsilAge = tonsil.locator(`input[xor="${tonsilXor}"][id="${ageAtSurgery}"]`); + const tonsilYear = tonsil.locator(`input[xor="${tonsilXor}"][id="${yearOfSurgery}"]`); + await expect(tonsilAge).toHaveAttribute('data-max', '45'); + await expect(tonsilYear).toHaveAttribute('data-min', '1979'); + await tonsilAge.fill('46'); + await tonsilAge.blur(); + await expect(tonsil.locator('.validation-container')).toContainText('less than or equal to 45'); + await tonsilAge.fill('12'); + await tonsilAge.blur(); + await tonsilYear.fill('2001'); + await tonsilYear.blur(); + await expect(tonsilAge).toHaveValue(''); + await expect(tonsilYear).toHaveValue('2001'); + await goNext(page); + + await expect(activeQuestion(page, gallbladderSurgery)).toBeVisible(); + const gallbladder = activeQuestion(page, gallbladderSurgery); + const gallbladderAge = gallbladder.locator(`input[xor="${gallbladderXor}"][id="${ageAtSurgery}"]`); + const gallbladderYear = gallbladder.locator(`input[xor="${gallbladderXor}"][id="${yearOfSurgery}"]`); + await expect(gallbladderAge).toHaveAttribute('data-max', '45'); + await expect(gallbladderYear).toHaveAttribute('data-min', '1979'); + await gallbladderYear.fill('1978'); + await gallbladderYear.blur(); + await expect(gallbladder.locator('.validation-container')).toContainText('greater than or equal to 1979'); + await gallbladderYear.fill('2005'); + await gallbladderYear.blur(); + await gallbladderAge.fill('30'); + await gallbladderAge.blur(); + await expect(gallbladderYear).toHaveValue(''); + await expect(gallbladderAge).toHaveValue('30'); + await goNext(page); + await flushHarness(page); + + const completed = await harnessSnapshot(page); + expect(completed.state.survey).toMatchObject({ + [surgeries]: ['797189152', '633546100'], + [tonsilSurgery]: { [yearOfSurgery]: '2001' }, + [gallbladderSurgery]: { [ageAtSurgery]: '30' }, + }); + await goBack(page); + await expect(activeQuestion(page, gallbladderSurgery)).toBeVisible(); + await expect(activeQuestion(page, gallbladderSurgery).locator(`input[xor="${gallbladderXor}"][id="${ageAtSurgery}"]`)).toHaveValue('30'); + await expect(activeQuestion(page, gallbladderSurgery).locator(`input[xor="${gallbladderXor}"][id="${yearOfSurgery}"]`)).toHaveValue(''); + await goBack(page); + await expect(activeQuestion(page, tonsilSurgery)).toBeVisible(); + await expect(activeQuestion(page, tonsilSurgery).locator(`input[xor="${tonsilXor}"][id="${yearOfSurgery}"]`)).toHaveValue('2001'); + await expect(activeQuestion(page, tonsilSurgery).locator(`input[xor="${tonsilXor}"][id="${ageAtSurgery}"]`)).toHaveValue(''); + + const rerendered = await rerenderParticipant(page, { + markdown, + previousResults: { age: '45', yob: '1979' }, + persistedData: { + ...completed.state.survey, + treeJSON: treeAtPath([surgeries, tonsilSurgery, gallbladderSurgery]), + }, + }); + expect(rerendered.result).toBe(true); + await expect(activeQuestion(page, gallbladderSurgery)).toBeVisible(); + await expect(activeQuestion(page, gallbladderSurgery).locator(`input[xor="${gallbladderXor}"][id="${ageAtSurgery}"]`)).toHaveValue('30'); + await expect(activeQuestion(page, gallbladderSurgery).locator(`input[xor="${gallbladderXor}"][id="${yearOfSurgery}"]`)).toHaveValue(''); + await expectHealthyHarness(page); + }); +}); diff --git a/tests/e2e/productionLoopCoverage.spec.js b/tests/e2e/productionLoopCoverage.spec.js new file mode 100644 index 0000000..d12c50f --- /dev/null +++ b/tests/e2e/productionLoopCoverage.spec.js @@ -0,0 +1,224 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { readLockedMarkdown, rerenderParticipant, treeAtPath } from './support/corpus.js'; +const illnessCount = 'D_860011428'; +const firstIllness = 'D_980800222_V2'; +const symptomQuestion = 'D_694503437'; +const siblingCount = 'D_694265648'; +const vaccinationCount = 'D_877074400_V2'; +const vaccinationDate = 'D_715581797_V2'; +const vaccinationMonth = 'D_141616126'; +const vaccinationChoice = 'D_220055064'; +const vaccinationSummary = 'SRVCOV_COV29_V1R0'; + +test.describe('locked production COVID loop participant paths @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'Production loop paths run once in Chromium.'); + }); + + test('skips the first generated Module 1 sibling form before it is displayed when the valid count is zero', async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('module1'), + persistedData: { + [siblingCount]: '0', + treeJSON: treeAtPath([siblingCount]), + }, + }); + + await expect(activeQuestion(page, siblingCount).locator(`#${siblingCount}`)).toHaveValue('0'); + await goNext(page); + await expect(activeQuestion(page, 'SIBCONFIRM')).toBeVisible(); + await goNext(page); + await expect(activeQuestion(page, 'CHILD')).toBeVisible(); + await expect(page.locator('#questionnaireRoot form.question.active#D_406098499_1_1')).toHaveCount(0); + await expectHealthyHarness(page); + }); + + test('captures the generated COVID month form through the delegated focusout path', async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19'), + persistedData: { + [illnessCount]: '2', + treeJSON: treeAtPath([`${firstIllness}_2_2`]), + }, + }); + + const month = activeQuestion(page, `${firstIllness}_2_2`).locator('#D_686508359_2_2'); + await expect(month).toBeVisible(); + await month.fill('2024-02'); + await expect(month).toHaveValue('2024-02'); + await month.blur(); + + const beforeNext = await harnessSnapshot(page); + expect(beforeNext.state.active).toMatchObject({ + [`${firstIllness}_2_2`]: '2024-02', + }); + + await goNext(page); + await expect(activeQuestion(page, 'D_366980310_2_2')).toBeVisible(); + await flushHarness(page); + const afterNext = await harnessSnapshot(page); + expect(afterNext.state.survey).toMatchObject({ + [illnessCount]: '2', + [`${firstIllness}_2_2`]: '2024-02', + }); + expect(afterNext.logs.storeCalls.at(-1).changes) + .toMatchObject({ [`D_793330426.${firstIllness}_2_2`]: '2024-02' }); + await expectHealthyHarness(page); + }); + + for (const language of ['en', 'es']) { + test(`completes and resumes two ${language} COVID vaccination iterations with their own stored keys`, async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19', language), + lang: language, + persistedData: { + [vaccinationCount]: '2', + treeJSON: treeAtPath([`${vaccinationDate}_1_1`]), + }, + }); + + const completeDate = async (iteration, value) => { + const dateQuestionId = `${vaccinationDate}_${iteration}_${iteration}`; + const month = activeQuestion(page, dateQuestionId).locator(`#${vaccinationMonth}_${iteration}_${iteration}`); + await expect(month).toBeVisible(); + await month.fill(value); + await month.blur(); + await goNext(page); + await expect(activeQuestion(page, `${vaccinationChoice}_${iteration}_${iteration}`)).toBeVisible(); + }; + const completeChoice = async (iteration) => { + const choiceQuestionId = `${vaccinationChoice}_${iteration}_${iteration}`; + await activeQuestion(page).locator(`label[for="${choiceQuestionId}_657978450"]`).click(); + await goNext(page); + await expect(activeQuestion(page, `${vaccinationSummary}_${iteration}_${iteration}`)).toBeVisible(); + }; + + await completeDate(1, '2021-02'); + await expect(activeQuestion(page, `${vaccinationChoice}_1_1`)).toBeVisible(); + await completeChoice(1); + + await goNext(page); + await expect(activeQuestion(page, `${vaccinationDate}_2_2`)).toBeVisible(); + await goBack(page); + await expect(activeQuestion(page, `${vaccinationSummary}_1_1`)).toBeVisible(); + await goNext(page); + await expect(activeQuestion(page, `${vaccinationDate}_2_2`)).toBeVisible(); + + await completeDate(2, '2022-03'); + await completeChoice(2); + await goNext(page); + await expect(activeQuestion(page, 'END')).toBeVisible(); + await flushHarness(page); + + const persisted = await harnessSnapshot(page); + expect(persisted.state.survey).toMatchObject({ + [vaccinationCount]: '2', + [`${vaccinationDate}_1_1`]: '2021-02', + [`${vaccinationChoice}_1_1`]: { + [`${vaccinationChoice}_1_1`]: '657978450', + }, + [`${vaccinationDate}_2_2`]: '2022-03', + [`${vaccinationChoice}_2_2`]: { + [`${vaccinationChoice}_2_2`]: '657978450', + }, + }); + expect(persisted.state.survey).not.toHaveProperty(vaccinationChoice); + expect(JSON.parse(persisted.state.survey.treeJSON).currentNode).toBe(`${vaccinationSummary}_2_2`); + const storedChanges = persisted.logs.storeCalls.map(({ changes }) => changes); + expect(storedChanges).toEqual(expect.arrayContaining([ + expect.objectContaining({ [`D_793330426.${vaccinationDate}_1_1`]: '2021-02' }), + expect.objectContaining({ [`D_793330426.${vaccinationChoice}_1_1`]: expect.any(Object) }), + expect.objectContaining({ [`D_793330426.${vaccinationDate}_2_2`]: '2022-03' }), + expect.objectContaining({ [`D_793330426.${vaccinationChoice}_2_2`]: expect.any(Object) }), + ])); + + await rerenderParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19', language), + persistedData: persisted.state.survey, + lang: language, + }); + // Quest stores treeJSON before swapping the next form, so a resumed participant + // returns to the persisted summary rather than the just-rendered destination. + await expect(activeQuestion(page, `${vaccinationSummary}_2_2`)).toBeVisible(); + await expectHealthyHarness(page); + }); + } + + for (const language of ['en', 'es']) { + test(`restores ${language} COVID iteration 2 and Back crosses its real loop boundary`, async ({ page }) => { + await openParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19', language), + lang: language, + persistedData: { + [illnessCount]: '2', + D_686508359_1_1: '2024-01', + [`${symptomQuestion}_1_1`]: '104430631', + treeJSON: treeAtPath([ + `${symptomQuestion}_1_1`, + '_CONTINUE1_1_1', + `${firstIllness}_2_2`, + ]), + }, + }); + + await expect(activeQuestion(page, `${firstIllness}_2_2`)).toBeVisible(); + await goBack(page); + await expect(activeQuestion(page, `${symptomQuestion}_1_1`)).toBeVisible(); + await expect(activeQuestion(page).locator(`input[value="104430631"]`)).toBeChecked(); + + const snapshot = await expectHealthyHarness(page); + expect(snapshot.state.survey).toMatchObject({ + [illnessCount]: '2', + D_686508359_1_1: '2024-01', + [`${symptomQuestion}_1_1`]: '104430631', + }); + }); + + test(`stores and resumes ${language} COVID iteration-specific choice response keys`, async ({ page }) => { + const initialData = { + [illnessCount]: '2', + treeJSON: treeAtPath(['D_366980310_2_2']), + }; + await openParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19', language), + lang: language, + persistedData: initialData, + }); + + await expect(activeQuestion(page, 'D_366980310_2_2')).toBeVisible(); + await activeQuestion(page).locator('label[for="D_366980310_2_2_104430631"]').click(); + await goNext(page); + await expect(activeQuestion(page, 'D_498462481_2_2')).toBeVisible(); + await flushHarness(page); + + const beforeReload = await harnessSnapshot(page); + expect(beforeReload.state.survey).toMatchObject({ + [illnessCount]: '2', + D_366980310_2_2: '104430631', + }); + expect(beforeReload.state.survey).not.toHaveProperty('D_366980310'); + + await rerenderParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19', language), + persistedData: beforeReload.state.survey, + lang: language, + }); + + await expect(activeQuestion(page, 'D_366980310_2_2')).toBeVisible(); + const restored = await expectHealthyHarness(page); + expect(restored.state.survey).toMatchObject({ + [illnessCount]: '2', + D_366980310_2_2: '104430631', + }); + }); + } +}); diff --git a/tests/e2e/productionPiping.spec.js b/tests/e2e/productionPiping.spec.js new file mode 100644 index 0000000..a6927c7 --- /dev/null +++ b/tests/e2e/productionPiping.spec.js @@ -0,0 +1,275 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goBack, + goNext, + harnessSnapshot, + openParticipant, +} from './support/harness.js'; +import { readLockedMarkdown, rerenderParticipant, treeAtPath } from './support/corpus.js'; + +const module1Name = 'D_726699695_V2'; +const module2Name = 'D_745268907_V2'; +const covidName = 'D_793330426'; + +const siblingCount = 'D_694265648'; +const siblingName = 'D_406098499'; +const siblingSex = 'D_579563781'; + +const fertilityMedications = 'D_881200765'; +const otherMedication = 'D_762700622'; +const otherMedicationDuration = 'D_466346054'; + +const illnessCount = 'D_860011428'; +const symptomPresence = 'D_694503437'; +const otherSymptoms = 'D_110872086'; +const otherSymptomsText = 'D_637540387'; +const stillExperiencingOtherSymptoms = 'D_591826144'; +const otherSymptomsDuration = 'D_934384452'; +const illnessSummary = 'SRVCOV_COVSUMMARY_V1R0'; +const illnessDate = 'D_686508359'; +const illnessSymptoms = 'D_705336878'; +const illnessOtherSymptomsText = 'D_218852075'; + +const vaccinationCount = 'D_877074400_V2'; +const vaccinationQuestion = 'D_715581797_V2'; +const vaccinationDate = 'D_141616126'; +const vaccinationChoice = 'D_220055064'; +const otherVaccineText = 'D_395747093'; +const vaccinationSummary = 'SRVCOV_COV29_V1R0'; + +function expectNoRawPipe(question) { + return expect(question).not.toContainText('{$'); +} + +test.describe('locked production response piping @corpus', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'Production piping paths run once in Chromium.'); + }); + + for (const language of ['en', 'es']) { + test(`keeps ${language} sibling names isolated by loop iteration through Back and resume`, async ({ page }) => { + const firstNameQuestion = `${siblingName}_1_1`; + const firstSexQuestion = `${siblingSex}_1_1`; + const nameBeforeEdit = 'Ari'; + const nameAfterEdit = 'Bea'; + const markdown = readLockedMarkdown('module1', language); + + await openParticipant(page, { + markdown, + lang: language, + persistedData: { + [siblingCount]: '2', + [firstNameQuestion]: nameBeforeEdit, + treeJSON: treeAtPath([siblingCount, 'SIBCONFIRM', firstNameQuestion, firstSexQuestion]), + }, + }); + + await expect(activeQuestion(page, firstSexQuestion)).toContainText(nameBeforeEdit); + await expectNoRawPipe(activeQuestion(page, firstSexQuestion)); + await activeQuestion(page, firstSexQuestion).locator(`label[for="${firstSexQuestion}_536341288"]`).click(); + await goNext(page); + await goBack(page); + await goBack(page); + + await expect(activeQuestion(page, firstNameQuestion)).toBeVisible(); + // The generated form carries the loop suffix, while the authored + // nickname textbox retains its source input ID. + const nameInput = activeQuestion(page, firstNameQuestion).locator('input[type="text"]'); + await nameInput.fill(nameAfterEdit); + await nameInput.blur(); + await goNext(page); + await expect(activeQuestion(page, firstSexQuestion)).toContainText(nameAfterEdit); + await expect(activeQuestion(page, firstSexQuestion)).not.toContainText(nameBeforeEdit); + + await flushHarness(page); + const edited = await harnessSnapshot(page); + expect(edited.state.survey).toMatchObject({ [firstNameQuestion]: nameAfterEdit }); + expect(edited.logs.storeCalls.some(({ changes }) => ( + changes[`${module1Name}.${firstNameQuestion}`] === nameAfterEdit + ))).toBe(true); + + await rerenderParticipant(page, { + markdown, + lang: language, + persistedData: { + ...edited.state.survey, + [`${siblingName}_2_2`]: 'Cleo', + treeJSON: treeAtPath([`${siblingSex}_2_2`]), + }, + }); + await expect(activeQuestion(page, `${siblingSex}_2_2`)).toContainText('Cleo'); + await expect(activeQuestion(page, `${siblingSex}_2_2`)).not.toContainText(nameAfterEdit); + await expectHealthyHarness(page); + }); + + test(`pipes ${language} nested Other medication text into its follow-up and preserves its compound response`, async ({ page }) => { + const medication = 'NovaMed 42'; + await openParticipant(page, { + markdown: readLockedMarkdown('module2', language), + lang: language, + persistedData: { treeJSON: treeAtPath([fertilityMedications]) }, + }); + + const source = activeQuestion(page, fertilityMedications); + await source.locator(`label[for="${fertilityMedications}_807835037"]`).click(); + const otherInput = source.locator(`#${otherMedication}`); + await otherInput.fill(medication); + await otherInput.blur(); + await expect(source.locator(`#${fertilityMedications}_807835037`)).toBeChecked(); + await goNext(page); + + const followUp = activeQuestion(page, otherMedicationDuration); + await expect(followUp).toContainText(medication); + await expectNoRawPipe(followUp); + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + expect(snapshot.state.survey).toMatchObject({ + [fertilityMedications]: { + [fertilityMedications]: ['807835037'], + [otherMedication]: medication, + }, + }); + expect(snapshot.logs.storeCalls.some(({ changes }) => ( + changes[`${module2Name}.${fertilityMedications}`]?.[otherMedication] === medication + ))).toBe(true); + + await goBack(page); + await expect(activeQuestion(page, fertilityMedications).locator(`#${fertilityMedications}_807835037`)).toBeChecked(); + await expect(activeQuestion(page, fertilityMedications).locator(`#${otherMedication}`)).toHaveValue(medication); + await expectHealthyHarness(page); + }); + + test(`pipes ${language} Other symptom text into both downstream questions and restores it`, async ({ page }) => { + const symptomText = 'vertigo and blurred vision'; + const markdown = readLockedMarkdown('moduleCOVID19', language); + const sourceState = { + [illnessCount]: '1', + [`${symptomPresence}_1_1`]: '353358909', + treeJSON: treeAtPath([`${otherSymptoms}`]), + }; + await openParticipant(page, { markdown, lang: language, persistedData: sourceState }); + + const source = activeQuestion(page, otherSymptoms); + await source.locator(`label[for="${otherSymptoms}_707601969"]`).click(); + const input = source.locator(`#${otherSymptomsText}`); + await input.fill(symptomText); + await input.blur(); + await goNext(page); + await expect(activeQuestion(page, stillExperiencingOtherSymptoms)).toContainText(symptomText); + await expectNoRawPipe(activeQuestion(page, stillExperiencingOtherSymptoms)); + + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + expect(snapshot.state.survey).toMatchObject({ + [otherSymptoms]: { + [otherSymptoms]: '707601969', + [otherSymptomsText]: symptomText, + }, + }); + + await goBack(page); + await expect(activeQuestion(page, otherSymptoms).locator(`#${otherSymptoms}_707601969`)).toBeChecked(); + await expect(activeQuestion(page, otherSymptoms).locator(`#${otherSymptomsText}`)).toHaveValue(symptomText); + + await rerenderParticipant(page, { + markdown, + lang: language, + persistedData: { + ...snapshot.state.survey, + treeJSON: treeAtPath([otherSymptomsDuration]), + }, + }); + await expect(activeQuestion(page, otherSymptomsDuration)).toContainText(symptomText); + await expectNoRawPipe(activeQuestion(page, otherSymptomsDuration)); + await expectHealthyHarness(page); + }); + + test(`pipes ${language} looped vaccination date and Other vaccine text into its summary and resume`, async ({ page }) => { + const vaccine = 'Covaxin'; + const dateQuestion = `${vaccinationQuestion}_1_1`; + const choiceQuestion = `${vaccinationChoice}_1_1`; + const monthInput = `${vaccinationDate}_1_1`; + const otherInput = `${otherVaccineText}_1_1`; + const summaryQuestion = `${vaccinationSummary}_1_1`; + const markdown = readLockedMarkdown('moduleCOVID19', language); + + await openParticipant(page, { + markdown, + lang: language, + persistedData: { + [vaccinationCount]: '1', + treeJSON: treeAtPath([dateQuestion]), + }, + }); + await activeQuestion(page, dateQuestion).locator(`#${monthInput}`).fill('2022-03'); + await activeQuestion(page, dateQuestion).locator(`#${monthInput}`).blur(); + await goNext(page); + await expect(activeQuestion(page, choiceQuestion)).toBeVisible(); + await activeQuestion(page, choiceQuestion).locator(`label[for="${choiceQuestion}_807835037"]`).click(); + await activeQuestion(page, choiceQuestion).locator(`#${otherInput}`).fill(vaccine); + await activeQuestion(page, choiceQuestion).locator(`#${otherInput}`).blur(); + await goNext(page); + + const summary = activeQuestion(page, summaryQuestion); + await expect(summary).toContainText('2022-03'); + await expect(summary).toContainText(vaccine); + await expectNoRawPipe(summary); + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + expect(snapshot.state.survey).toMatchObject({ + [vaccinationCount]: '1', + [dateQuestion]: '2022-03', + [choiceQuestion]: { + [choiceQuestion]: '807835037', + [otherInput]: vaccine, + }, + }); + expect(snapshot.logs.storeCalls.some(({ changes }) => ( + changes[`${covidName}.${choiceQuestion}`]?.[otherInput] === vaccine + ))).toBe(true); + + // Quest persists the current form immediately before it swaps to the + // summary. Supply the completed navigation tree to exercise a true + // resume at the piped summary, rather than the preceding choice form. + await rerenderParticipant(page, { + markdown, + lang: language, + persistedData: { + ...snapshot.state.survey, + treeJSON: treeAtPath([dateQuestion, choiceQuestion, summaryQuestion]), + }, + }); + await expect(activeQuestion(page, summaryQuestion)).toContainText('2022-03'); + await expect(activeQuestion(page, summaryQuestion)).toContainText(vaccine); + await expectHealthyHarness(page); + }); + + test(`renders ${language} checkbox Other symptom text in the real COVID displayList summary`, async ({ page }) => { + const otherSymptom = 'post-viral brain fog'; + const summaryQuestion = `${illnessSummary}_1_1`; + await openParticipant(page, { + markdown: readLockedMarkdown('moduleCOVID19', language), + lang: language, + persistedData: { + [illnessCount]: '1', + [`${illnessDate}_1_1`]: '2024-02', + [`${symptomPresence}_1_1`]: '353358909', + [`${illnessSymptoms}_1_1`]: { + [`${illnessSymptoms}_1_1`]: ['807835037'], + [`${illnessOtherSymptomsText}_1_1`]: otherSymptom, + }, + treeJSON: treeAtPath([summaryQuestion]), + }, + }); + + const summary = activeQuestion(page, summaryQuestion); + await expect(summary).toContainText(otherSymptom); + await expect(summary).toContainText('2024-02'); + await expectNoRawPipe(summary); + await expectHealthyHarness(page); + }); + } +}); diff --git a/tests/e2e/responsive.spec.js b/tests/e2e/responsive.spec.js new file mode 100644 index 0000000..57f7684 --- /dev/null +++ b/tests/e2e/responsive.spec.js @@ -0,0 +1,161 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goNext, + openParticipant, + selectLabeledResponse, +} from './support/harness.js'; + +const RESPONSIVE_PROJECTS = new Set([ + 'chromium-desktop', + 'chromium-phone', + 'chromium-tablet', +]); + +async function expectMobileResponseLabel(label, cell, { + backgroundColor, + text, + textColor, +}) { + await expect(label).toHaveText(text); + await expect(label).toBeVisible(); + await expect(label).toHaveCSS('display', 'flex'); + await expect(label).toHaveCSS('visibility', 'visible'); + await expect(label).toHaveCSS('opacity', '1'); + await expect(label).toHaveCSS('color', textColor); + await expect(label).toHaveCSS('-webkit-text-fill-color', textColor); + await expect(label).toHaveCSS('background-color', backgroundColor); + + const [labelBox, cellBox] = await Promise.all([ + label.boundingBox(), + cell.boundingBox(), + ]); + expect(labelBox).not.toBeNull(); + expect(cellBox).not.toBeNull(); + expect(labelBox.width / cellBox.width).toBeGreaterThan(0.95); + expect(labelBox.height / cellBox.height).toBeGreaterThan(0.95); +} + +test.describe('participant responsive layout @responsive @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + !RESPONSIVE_PROJECTS.has(testInfo.project.name), + 'Responsive assertions run at the canonical Chromium breakpoints.', + ); + }); + + test('preserves DOM tab order while changing the visual action order', async ({ page }, testInfo) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + + const question = activeQuestion(page, 'DETAIL'); + const next = await question.locator('button.next').boundingBox(); + const reset = await question.locator('button.reset').boundingBox(); + const back = await question.locator('button.previous').boundingBox(); + expect(next).not.toBeNull(); + expect(reset).not.toBeNull(); + expect(back).not.toBeNull(); + + if (testInfo.project.name === 'chromium-phone') { + expect(next.y).toBeLessThan(reset.y); + expect(reset.y).toBeLessThan(back.y); + } else { + expect(back.x).toBeLessThan(reset.x); + expect(reset.x).toBeLessThan(next.x); + expect(Math.abs(back.y - next.y)).toBeLessThan(2); + } + + const domOrder = await question.locator('button').evaluateAll((buttons) => ( + buttons.map((button) => button.dataset.clickType) + )); + expect(domOrder).toEqual(['next', 'reset', 'previous']); + await expectHealthyHarness(page); + }); + + test('switches the response grid between table and stacked-card layouts', async ({ page }, testInfo) => { + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + + const question = activeQuestion(page, 'GRID_RATE'); + const table = question.locator('table.quest-grid'); + await expect(table).toBeVisible(); + + if (testInfo.project.name === 'chromium-phone') { + await expect(table.locator('thead')).toHaveCSS('display', 'none'); + await expect(table.locator('td.response').first()).toHaveCSS('display', 'block'); + await expect(table.locator('td.response').first()).toHaveAttribute('data-header', /^\s*Never$/); + } else { + await expect(table).toHaveCSS('display', 'inline-table'); + await expect(table.locator('tr').first()).toHaveCSS('display', 'table-row'); + } + + await question.locator('tr[data-question-id="GRID_WALK"] label', { hasText: 'Sometimes' }).click(); + await expect(question.locator('#GRID_WALK_1')).toBeChecked(); + await expectHealthyHarness(page); + }); + + test('keeps phone grid response names visible before and after selection', async ({ page }, testInfo) => { + test.skip( + testInfo.project.name !== 'chromium-phone', + 'Mobile cards are the only layout where response labels supply the visible column names.', + ); + + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + + const row = activeQuestion(page, 'GRID_RATE').locator('tr[data-question-id="GRID_WALK"]'); + const expectedLabels = ['Never', 'Sometimes', 'Often']; + + for (const [index, text] of expectedLabels.entries()) { + const cell = row.locator('td.response').nth(index); + await expectMobileResponseLabel(cell.locator('label.custom-label'), cell, { + backgroundColor: 'rgb(240, 240, 240)', + text, + textColor: 'rgb(51, 51, 51)', + }); + } + + const selectedCell = row.locator('td.response').nth(1); + await selectedCell.locator('label.custom-label').click(); + await expect(row.locator('#GRID_WALK_1')).toBeChecked(); + await expectMobileResponseLabel(selectedCell.locator('label.custom-label'), selectedCell, { + backgroundColor: 'rgb(50, 122, 187)', + text: 'Sometimes', + textColor: 'rgb(255, 255, 255)', + }); + await expectHealthyHarness(page); + }); + + test('keeps representative responsive grid geometry stable @visual', async ({ page }, testInfo) => { + testInfo.snapshotSuffix = ''; + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + const question = activeQuestion(page, 'GRID_RATE'); + await question.locator('tr[data-question-id="GRID_WALK"] label', { hasText: 'Sometimes' }).click(); + await page.mouse.move(0, 0); + // Keep this cross-platform snapshot focused on geometry and selected-state + // fills. The phone-specific test above separately protects visible label + // text and its exact unselected/selected colors. + await page.addStyleTag({ + content: ` + #questionnaireRoot, + #questionnaireRoot * { + -webkit-text-fill-color: transparent !important; + text-shadow: none !important; + } + `, + }); + + await expect(question).toHaveScreenshot( + `participant-grid-${testInfo.project.name}.png`, + { + animations: 'disabled', + caret: 'hide', + maxDiffPixelRatio: 0.02, + scale: 'css', + }, + ); + }); +}); diff --git a/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-desktop-chromium-desktop.png b/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-desktop-chromium-desktop.png new file mode 100644 index 0000000..a2a6da1 Binary files /dev/null and b/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-desktop-chromium-desktop.png differ diff --git a/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-phone-chromium-phone.png b/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-phone-chromium-phone.png new file mode 100644 index 0000000..c6cd130 Binary files /dev/null and b/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-phone-chromium-phone.png differ diff --git a/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-tablet-chromium-tablet.png b/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-tablet-chromium-tablet.png new file mode 100644 index 0000000..b7d93b4 Binary files /dev/null and b/tests/e2e/responsive.spec.js-snapshots/participant-grid-chromium-tablet-chromium-tablet.png differ diff --git a/tests/e2e/storageConcurrency.spec.js b/tests/e2e/storageConcurrency.spec.js new file mode 100644 index 0000000..b49336a --- /dev/null +++ b/tests/e2e/storageConcurrency.spec.js @@ -0,0 +1,65 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + flushHarness, + goNext, + harnessSnapshot, + openParticipant, + selectLabeledResponse, +} from './support/harness.js'; + +test.describe('non-blocking host-store ordering @core @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(testInfo.project.name !== 'chromium-desktop', 'The overlapping host-write contract runs once in Chromium.'); + }); + + test('keeps navigation and per-question deltas stable when successful writes settle out of order', async ({ page }) => { + await openParticipant(page, { + fixture: 'navigationState.txt', + storeOutcomes: [ + { kind: 'resolve', delayMs: 1_000, value: { code: 200 } }, + { kind: 'resolve', delayMs: 10, value: { code: 200 } }, + ], + }); + + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + await expect(activeQuestion(page, 'DETAIL')).toBeVisible(); + + const detail = activeQuestion(page, 'DETAIL').locator('#detail'); + await detail.fill('Concurrent host write'); + await detail.blur(); + await goNext(page); + await expect(activeQuestion(page, 'SUMMARY')).toBeVisible(); + + await expect.poll(async () => ( + (await harnessSnapshot(page)).logs.storeCalls.map(({ status }) => status) + )).toEqual(['pending', 'fulfilled']); + const whilePending = await harnessSnapshot(page); + expect(whilePending.logs.storeCalls).toHaveLength(2); + expect(whilePending.logs.storeCalls[0]).toMatchObject({ status: 'pending', settlementIndex: null }); + expect(whilePending.logs.storeCalls[1]).toMatchObject({ status: 'fulfilled', settlementIndex: 1 }); + expect(whilePending.state.survey).toMatchObject({ + PATH: '1', + DETAIL: 'Concurrent host write', + }); + + await flushHarness(page); + await expect(activeQuestion(page, 'SUMMARY')).toBeVisible(); + const settled = await expectHealthyHarness(page); + expect(settled.state.survey).toMatchObject({ + PATH: '1', + DETAIL: 'Concurrent host write', + }); + expect(settled.logs.storeCalls[0].changes).toMatchObject({ 'TEST_NAV.PATH': '1' }); + expect(settled.logs.storeCalls[1].changes).toMatchObject({ 'TEST_NAV.DETAIL': 'Concurrent host write' }); + expect(settled.logs.storeCalls.map(({ status, settlementIndex }) => ({ status, settlementIndex }))).toEqual([ + { status: 'fulfilled', settlementIndex: 2 }, + { status: 'fulfilled', settlementIndex: 1 }, + ]); + expect(settled.logs.storeCalls[0].changes).not.toHaveProperty('TEST_NAV.DETAIL'); + expect(settled.logs.storeCalls[1].changes).not.toHaveProperty('TEST_NAV.PATH'); + await expect(page.locator('#storeErrorModal')).not.toHaveClass(/show/); + }); +}); diff --git a/tests/e2e/support/authoring.js b/tests/e2e/support/authoring.js new file mode 100644 index 0000000..8c888a9 --- /dev/null +++ b/tests/e2e/support/authoring.js @@ -0,0 +1,254 @@ +import { readFileSync } from 'node:fs'; +import { createHash } from 'node:crypto'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { expect } from './test.js'; + +const supportDirectory = dirname(fileURLToPath(import.meta.url)); +const repositoryRoot = join(supportDirectory, '..', '..', '..'); + +const paths = { + index: join(repositoryRoot, 'index.html'), + bootstrapCss: join(repositoryRoot, 'node_modules', 'bootstrap-authoring', 'dist', 'css', 'bootstrap.min.css'), + bootstrapJs: join(repositoryRoot, 'node_modules', 'bootstrap-authoring', 'dist', 'js', 'bootstrap.bundle.min.js'), + fontAwesomeCss: join(repositoryRoot, 'node_modules', '@fortawesome', 'fontawesome-free', 'css', 'fontawesome.min.css'), + localForageJs: join(repositoryRoot, 'node_modules', 'localforage', 'dist', 'localforage.min.js'), + fontLock: join(repositoryRoot, 'tests', 'e2e', 'assets', 'fonts.lock.json'), +}; + +const fontLock = JSON.parse(readFileSync(paths.fontLock, 'utf8')); +const libreBaskerville = fontLock.assets.find((asset) => asset.family === 'Libre Baskerville'); +if (!libreBaskerville) { + throw new Error('The authoring asset lock is missing Libre Baskerville.'); +} + +const libreBaskervillePath = join(repositoryRoot, 'tests', 'e2e', 'assets', ...libreBaskerville.path.split('/')); +const libreBaskervilleBytes = readFileSync(libreBaskervillePath); +const libreBaskervilleDigest = createHash('sha256').update(libreBaskervilleBytes).digest('hex'); +if (libreBaskervilleBytes.byteLength !== libreBaskerville.bytes + || libreBaskervilleDigest !== libreBaskerville.sha256) { + throw new Error('The pinned Libre Baskerville authoring asset failed its integrity check.'); +} + +const libreBaskervilleLicensePath = join( + repositoryRoot, + 'tests', + 'e2e', + 'assets', + ...libreBaskerville.licensePath.split('/'), +); +const libreBaskervilleLicenseDigest = createHash('sha256') + .update(readFileSync(libreBaskervilleLicensePath)) + .digest('hex'); +if (libreBaskervilleLicenseDigest !== libreBaskerville.licenseSha256) { + throw new Error('The pinned Libre Baskerville license failed its integrity check.'); +} + +export const LIBRE_BASKERVILLE_STYLESHEET_URL = libreBaskerville.stylesheetUrl; +export const LIBRE_BASKERVILLE_FONT_URL = libreBaskerville.url; +export const AUTHORING_BOOTSTRAP_CSS_URL = 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css'; +export const AUTHORING_BOOTSTRAP_JS_URL = 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js'; + +const LIBRE_BASKERVILLE_CSS = ` + @font-face { + font-family: 'Libre Baskerville'; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url('${LIBRE_BASKERVILLE_FONT_URL}') format('truetype'); + } +`; + +const AUTHORING_EXTERNAL_ASSETS = [ + { + url: AUTHORING_BOOTSTRAP_CSS_URL, + path: paths.bootstrapCss, + contentType: 'text/css', + }, + { + url: AUTHORING_BOOTSTRAP_JS_URL, + path: paths.bootstrapJs, + contentType: 'application/javascript', + }, + { + url: 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.2/css/fontawesome.min.css', + path: paths.fontAwesomeCss, + contentType: 'text/css', + }, + { + url: 'https://cdnjs.cloudflare.com/ajax/libs/localforage/1.10.0/localforage.min.js', + path: paths.localForageJs, + contentType: 'application/javascript', + }, +]; + +export const DEMO_MODULE_URL = 'https://raw.githubusercontent.com/episphere/quest/main/questionnaires/demo.txt'; +export const TEST_MODULE_URL = 'https://questionnaire.test/canonical.txt'; +export const HTTP_ERROR_MODULE_URL = 'https://questionnaire.test/not-found.txt'; +export const REJECTED_MODULE_URL = 'https://questionnaire.test/rejected.txt'; +export const GITHUB_BLOB_MODULE_URL = 'https://github.com/episphere/questionnaire/blob/locked/prod/canonical.txt'; +export const GITHUB_WEB_RAW_MODULE_URL = 'https://github.com/episphere/questionnaire/raw/locked/prod/canonical.txt'; +export const GITHUB_RAW_MODULE_URL = 'https://raw.githubusercontent.com/episphere/questionnaire/locked/prod/canonical.txt'; + +const LOCALFORAGE_FALLBACK_SCRIPT = ` + window.localforage = { + createInstance() { + throw new Error('Synthetic LocalForage initialization failure'); + }, + clear() { + return Promise.resolve(); + } + }; +`; + +function normalizeModuleResponse(response) { + if (typeof response === 'string') { + return { status: 200, body: response, contentType: 'text/plain' }; + } + + return { + status: response.status ?? 200, + body: response.body ?? '', + contentType: response.contentType ?? 'text/plain', + abort: response.abort, + }; +} + +export async function installAuthoringRoutes(page, diagnostics, { + demoMarkdown = '', + localForageMode = 'normal', + modules = {}, +} = {}) { + // Preserve the checked-in page's SRI and crossorigin declarations. The + // intercepted authoring assets are byte-identical to its pinned versions; + // the participant harness separately uses Connect-shaped Bootstrap 5.3.3. + const importMap = ` + + `; + const readinessProbe = ` + + `; + const localIndex = readFileSync(paths.index, 'utf8') + .replace('', `${importMap}${readinessProbe}`); + + await page.route('**/index.html*', async (route) => { + await route.fulfill({ + status: 200, + contentType: 'text/html', + body: localIndex, + }); + }); + + for (const asset of AUTHORING_EXTERNAL_ASSETS) { + await page.route(asset.url, async (route) => { + diagnostics.fulfilledExternalRequests.push(asset.url); + + if (asset.url.includes('localforage') && localForageMode === 'initialization-failure') { + await route.fulfill({ + status: 200, + contentType: 'application/javascript', + body: LOCALFORAGE_FALLBACK_SCRIPT, + }); + return; + } + + await route.fulfill({ + status: 200, + contentType: asset.contentType, + headers: { 'access-control-allow-origin': '*' }, + path: asset.path, + }); + }); + } + + await page.route('https://fonts.googleapis.com/**', async (route) => { + diagnostics.fulfilledExternalRequests.push(route.request().url()); + await route.fulfill({ + status: 200, + contentType: 'text/css', + body: LIBRE_BASKERVILLE_CSS, + }); + }); + + await page.route(LIBRE_BASKERVILLE_FONT_URL, async (route) => { + diagnostics.fulfilledExternalRequests.push(route.request().url()); + await route.fulfill({ + status: 200, + contentType: libreBaskerville.mimeType, + path: libreBaskervillePath, + }); + }); + + await page.route(DEMO_MODULE_URL, async (route) => { + diagnostics.fulfilledExternalRequests.push(DEMO_MODULE_URL); + await route.fulfill({ status: 200, contentType: 'text/plain', body: demoMarkdown }); + }); + + for (const [url, moduleResponse] of Object.entries(modules)) { + const response = normalizeModuleResponse(moduleResponse); + await page.route(url, async (route) => { + diagnostics.fulfilledExternalRequests.push(url); + if (response.abort) { + await route.abort(response.abort); + return; + } + + await route.fulfill({ + status: response.status, + contentType: response.contentType, + body: response.body, + }); + }); + } +} + +export async function waitForAuthoringReady(page) { + await page.waitForLoadState('load'); + await page.waitForFunction(() => { + const textarea = document.getElementById('markupTextArea'); + return Boolean( + window.localforage + && window.__questAuthoringReady === true + && textarea + && !textarea.disabled, + ); + }); + await page.evaluate(() => new Promise((resolve) => { + requestAnimationFrame(() => requestAnimationFrame(resolve)); + })); +} + +export async function renderAuthoringMarkdown(page, markdown) { + const textarea = page.locator('#markupTextArea'); + await textarea.fill(markdown); + await textarea.dispatchEvent('keyup', { key: 'a' }); + await page.waitForFunction(() => document.querySelectorAll('#rendering form.question').length > 0); +} + +export async function openAuthoringSettings(page) { + await page.getByRole('link', { name: 'Settings' }).click(); + await expect(page.locator('#settings')).toHaveClass(/show/); +} + +export async function closeAuthoringSettings(page) { + await page.locator('#settings').getByRole('button', { name: 'Close' }).click(); + await expect(page.locator('#settings')).not.toHaveClass(/show/); +} diff --git a/tests/e2e/support/axe.js b/tests/e2e/support/axe.js new file mode 100644 index 0000000..25271e2 --- /dev/null +++ b/tests/e2e/support/axe.js @@ -0,0 +1,37 @@ +import AxeBuilder from '@axe-core/playwright'; + +function normalizeTarget(target) { + return Array.isArray(target) ? target.map(String) : [String(target)]; +} + +function findingKey({ id, impact, target }) { + return JSON.stringify([id, impact, normalizeTarget(target)]); +} + +export async function analyzeQuestAxe(page) { + const results = await new AxeBuilder({ page }) + .include('#questionnaireRoot') + .analyze(); + + return results.violations.flatMap((violation) => ( + violation.nodes.map((node) => ({ + id: violation.id, + impact: violation.impact, + target: normalizeTarget(node.target), + })) + )); +} + +export function matchesAxeDefect(finding, defect) { + return defect.targets.some((target) => findingKey(finding) === findingKey({ + id: defect.ruleId, + impact: defect.impact, + target, + })); +} + +export function unwaivedAxeFindings(findings, acceptedDefects) { + return findings.filter((finding) => ( + !acceptedDefects.some((defect) => matchesAxeDefect(finding, defect)) + )); +} diff --git a/tests/e2e/support/corpus.js b/tests/e2e/support/corpus.js new file mode 100644 index 0000000..9120ec6 --- /dev/null +++ b/tests/e2e/support/corpus.js @@ -0,0 +1,47 @@ +import { readFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const supportDirectory = dirname(fileURLToPath(import.meta.url)); +export const repositoryRoot = join(supportDirectory, '..', '..', '..'); +export const corpusLock = JSON.parse(readFileSync(join(repositoryRoot, 'tests', 'corpus', 'lock.json'), 'utf8')); + +export function findLockedCorpusRecord(module, locale = 'en') { + const record = corpusLock.files.find((file) => file.module === module && file.locale === locale); + if (!record) throw new Error(`Missing locked ${module} ${locale} corpus entry`); + return record; +} + +export function lockedCorpusPath(record) { + return join(repositoryRoot, corpusLock.cacheRoot, corpusLock.commit, record.path); +} + +export function readLockedMarkdown(module, locale = 'en') { + return readFileSync(lockedCorpusPath(findLockedCorpusRecord(module, locale)), 'utf8'); +} + +export function treeAt(questionId, previousQuestionId) { + const currentNode = { value: questionId, children: [] }; + const firstNode = previousQuestionId + ? { value: previousQuestionId, children: [currentNode] } + : currentNode; + return JSON.stringify({ rootNode: { value: null, children: [firstNode] }, currentNode: questionId }); +} + +export function treeAtPath(questionIds) { + const [first, ...rest] = questionIds; + const rootNode = { value: null, children: [{ value: first, children: [] }] }; + let node = rootNode.children[0]; + for (const questionId of rest) { + const child = { value: questionId, children: [] }; + node.children.push(child); + node = child; + } + return JSON.stringify({ rootNode, currentNode: questionIds.at(-1) }); +} + +export async function rerenderParticipant(page, config) { + await page.reload(); + await page.waitForFunction(() => window.questHarness?.ready === true); + return page.evaluate((nextConfig) => window.questHarness.render(nextConfig), config); +} diff --git a/tests/e2e/support/gridDeepCoverageFixtures.js b/tests/e2e/support/gridDeepCoverageFixtures.js new file mode 100644 index 0000000..dc4af4a --- /dev/null +++ b/tests/e2e/support/gridDeepCoverageFixtures.js @@ -0,0 +1,41 @@ +// Production grid from locked questionnaire/module2.txt at +// 7ae99a22af325cf0e14be047a7636462db9bfd50. Retaining the source IDs and +// response values exercises the high-cardinality storage shape. +export const productionSleepGridMarkdown = ` +{"name":"TEST_PRODUCTION_GRID"} +[GRID_LEAD] The next question uses a production response grid. +|grid?|id="D_981441822"|What is the chance that you would doze off or fall asleep (not just "feel tired") in each of these situations? If you are never or rarely in the situation, please make your best guess for what would happen.|[ +[D_403155173] Sitting and reading; +[D_576621769] Watching television; +[D_988508028] Sitting inactive in public place (such as a theater or a meeting); [D_186488870] Riding as a passenger in a car for an hour without stopping; +[D_922388461] Lying down to rest in the afternoon; +[D_760686611] Sitting and talking to someone; +[D_354550061] Sitting quietly after a lunch that did not include alcohol; +[D_179705366] In a car, while you are stopped for a few minutes in traffic; +[D_955609858] At the dinner table;]| +(514068832:No chance) +(774439579:Slight Chance) +(747099514:Moderate Chance) +(977681388: High Chance)| +[GRID_FOLLOWUP] The saved grid answer can now be revisited. +[END,end] Done. +`; + +export const productionSleepGridRows = Object.freeze({ + D_403155173: '774439579', + D_576621769: '747099514', + D_988508028: '977681388', + D_186488870: '514068832', + D_922388461: '774439579', + D_760686611: '747099514', + D_354550061: '977681388', + D_179705366: '514068832', + D_955609858: '774439579', +}); + +export async function selectProductionSleepGridRows(grid, expectedRows) { + for (const [rowId, selectedValue] of Object.entries(expectedRows)) { + const response = grid.locator(`input[name="${rowId}"][value="${selectedValue}"]`); + await response.locator('xpath=following-sibling::label').click(); + } +} diff --git a/tests/e2e/support/harness.js b/tests/e2e/support/harness.js new file mode 100644 index 0000000..aba651f --- /dev/null +++ b/tests/e2e/support/harness.js @@ -0,0 +1,71 @@ +import { readFileSync } from 'node:fs'; +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { expect } from './test.js'; + +const supportDirectory = dirname(fileURLToPath(import.meta.url)); +const repositoryRoot = join(supportDirectory, '..', '..', '..'); +const canonicalDirectory = join(repositoryRoot, 'tests', 'fixtures', 'canonical'); + +export function readCanonicalFixture(name) { + return readFileSync(join(canonicalDirectory, name), 'utf8'); +} + +export async function openParticipant(page, { + fixture = 'runtimeControls.txt', + markdown, + ...config +} = {}) { + await page.goto('/tests/harness/participant.html'); + await page.waitForFunction(() => window.questHarness?.ready === true); + + const renderResult = await page.evaluate((renderConfig) => { + return window.questHarness.render(renderConfig); + }, { + ...config, + markdown: markdown ?? readCanonicalFixture(fixture), + }); + + expect(renderResult.result, 'transform.render should report a successful participant render').toBe(true); + expect(renderResult.activeQuestionId, 'participant render should activate a question').toBeTruthy(); + + return renderResult; +} + +export async function harnessSnapshot(page) { + return page.evaluate(() => window.questHarness.snapshot()); +} + +export async function flushHarness(page) { + await page.evaluate(() => window.questHarness.flush()); +} + +export async function waitInHarness(page, milliseconds) { + await page.evaluate((delay) => window.questHarness.wait(delay), milliseconds); +} + +export function activeQuestion(page, questionId) { + const selector = questionId + ? `#questionnaireRoot form.question.active#${questionId}` + : '#questionnaireRoot form.question.active'; + return page.locator(selector); +} + +export async function goNext(page) { + await activeQuestion(page).getByRole('button', { name: 'Next question' }).click(); +} + +export async function goBack(page) { + await activeQuestion(page).getByRole('button', { name: 'Back to the previous question' }).click(); +} + +export async function selectLabeledResponse(page, label) { + await activeQuestion(page).locator('label', { hasText: label }).click(); +} + +export async function expectHealthyHarness(page, { allowErrors = false } = {}) { + await flushHarness(page); + const snapshot = await harnessSnapshot(page); + if (!allowErrors) expect(snapshot.logs.errors).toEqual([]); + return snapshot; +} diff --git a/tests/e2e/support/test.js b/tests/e2e/support/test.js new file mode 100644 index 0000000..1b913e3 --- /dev/null +++ b/tests/e2e/support/test.js @@ -0,0 +1,180 @@ +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { test as base, expect } from '@playwright/test'; + +const supportDirectory = dirname(fileURLToPath(import.meta.url)); +const repositoryRoot = join(supportDirectory, '..', '..', '..'); +const canonicalImageAsset = { + url: 'https://episphere.github.io/quest/images/FemaleBaldness1.png', + path: join(repositoryRoot, 'tests', 'e2e', 'assets', 'FemaleBaldness1.png'), +}; +const questRuntimeAssets = [ + { + url: 'https://episphere.github.io/quest-dev/ActiveLogic.css', + path: join(repositoryRoot, 'ActiveLogic.css'), + }, + { + url: 'https://episphere.github.io/quest-dev/Style1.css', + path: join(repositoryRoot, 'Style1.css'), + }, +]; +const versionedQuestRuntimeAsset = /^https:\/\/cdn\.jsdelivr\.net\/gh\/episphere\/quest@v[^/]+\/(ActiveLogic|Style1)\.css$/; +const FIREFOX_INSTALL_TRIGGER_DEPRECATION = /^\[JavaScript Warning: "InstallTrigger is deprecated and will be removed in the future\." \{file: "http:\/\/127\.0\.0\.1:\d+\/main\.js" line: 179\}\] \[source: http:\/\/127\.0\.0\.1:\d+\/main\.js\]$/; + +const testServerPort = process.env.QUEST_PLAYWRIGHT_PORT ?? '4173'; +const LOCAL_ORIGINS = new Set([ + `http://127.0.0.1:${testServerPort}`, + `http://localhost:${testServerPort}`, +]); + +function shouldUseLocalNetwork(urlString) { + const url = new URL(urlString); + return LOCAL_ORIGINS.has(url.origin) || ['about:', 'blob:', 'data:'].includes(url.protocol); +} + +/** + * Install the suite's offline policy on a Playwright Page. All + * route registration is awaited so the first navigation cannot race the + * policy. + */ +export async function installOfflineDiagnostics(page) { + const diagnostics = { + unexpectedRequests: [], + fulfilledExternalRequests: [], + pageErrors: [], + consoleErrors: [], + consoleWarnings: [], + acknowledgedBrowserWarnings: [], + }; + + page.on('pageerror', (error) => diagnostics.pageErrors.push(error.stack || error.message)); + page.on('console', (message) => { + if (message.type() === 'error') { + const source = message.location().url; + diagnostics.consoleErrors.push(source ? `${message.text()} [source: ${source}]` : message.text()); + } else if (message.type() === 'warning') { + const source = message.location().url; + const renderedMessage = source ? `${message.text()} [source: ${source}]` : message.text(); + + // Firefox emits this deprecation when Quest reads InstallTrigger + // for its existing browser branch. Keep the browser diagnostic + // visible in the record without masking unrelated warnings. + if (FIREFOX_INSTALL_TRIGGER_DEPRECATION.test(renderedMessage)) { + diagnostics.acknowledgedBrowserWarnings.push(renderedMessage); + } else { + diagnostics.consoleWarnings.push(renderedMessage); + } + } + }); + + await page.route('**/*', async (route) => { + if (shouldUseLocalNetwork(route.request().url())) { + await route.continue(); + return; + } + + diagnostics.unexpectedRequests.push(route.request().url()); + await route.abort('blockedbyclient'); + }); + + await page.route(canonicalImageAsset.url, async (route) => { + diagnostics.fulfilledExternalRequests.push(canonicalImageAsset.url); + await route.fulfill({ + status: 200, + contentType: 'image/png', + path: canonicalImageAsset.path, + }); + }); + + // A Connect render normally supplies prefetched Markdown and retains the + // questionnaire URL. Quest uses the nonempty URL as the signal to fetch + // its two runtime stylesheets. Fulfill that production branch with the + // exact checked-in CSS while keeping the browser deny-by-default. + for (const asset of questRuntimeAssets) { + await page.route(asset.url, async (route) => { + diagnostics.fulfilledExternalRequests.push(asset.url); + await route.fulfill({ + status: 200, + contentType: 'text/css', + path: asset.path, + }); + }); + } + + await page.route(versionedQuestRuntimeAsset, async (route) => { + const url = route.request().url(); + const fileName = new URL(url).pathname.split('/').at(-1); + diagnostics.fulfilledExternalRequests.push(url); + await route.fulfill({ + status: 200, + contentType: 'text/css', + path: join(repositoryRoot, fileName), + }); + }); + + return diagnostics; +} + +/** + * Every browser test receives a fresh Playwright page/context. + */ +export const test = base.extend({ + diagnostics: [async ({ page }, use) => { + const diagnostics = await installOfflineDiagnostics(page); + + await use(diagnostics); + + expect.soft(diagnostics.unexpectedRequests, 'browser attempted an unapproved external request').toEqual([]); + expect.soft(diagnostics.pageErrors, 'browser emitted an uncaught page error').toEqual([]); + expect.soft(diagnostics.consoleErrors, 'browser emitted an unexpected console error').toEqual([]); + expect.soft(diagnostics.consoleWarnings, 'browser emitted an unexpected console warning').toEqual([]); + }, { auto: true }], +}); + +export function expectAndClearConsoleErrors(diagnostics, expectedPatterns, { allowedPatterns = [] } = {}) { + const messages = diagnostics.consoleErrors.splice(0); + const acceptedPatterns = [...expectedPatterns, ...allowedPatterns]; + + for (const pattern of expectedPatterns) { + expect( + messages.some((message) => ( + pattern instanceof RegExp ? pattern.test(message) : message.includes(pattern) + )), + `expected a console error matching ${String(pattern)}; received ${JSON.stringify(messages)}`, + ).toBe(true); + } + + for (const message of messages) { + expect( + acceptedPatterns.some((pattern) => ( + pattern instanceof RegExp ? pattern.test(message) : message.includes(pattern) + )), + `unexpected console error while exercising a characterized failure: ${message}`, + ).toBe(true); + } +} + +export function expectAndClearConsoleWarnings(diagnostics, expectedPatterns, { allowedPatterns = [] } = {}) { + const messages = diagnostics.consoleWarnings.splice(0); + const acceptedPatterns = [...expectedPatterns, ...allowedPatterns]; + + for (const pattern of expectedPatterns) { + expect( + messages.some((message) => ( + pattern instanceof RegExp ? pattern.test(message) : message.includes(pattern) + )), + `expected a console warning matching ${String(pattern)}; received ${JSON.stringify(messages)}`, + ).toBe(true); + } + + for (const message of messages) { + expect( + acceptedPatterns.some((pattern) => ( + pattern instanceof RegExp ? pattern.test(message) : message.includes(pattern) + )), + `unexpected console warning while exercising a characterized warning: ${message}`, + ).toBe(true); + } +} + +export { expect }; diff --git a/tests/e2e/temporalInputPartitions.spec.js b/tests/e2e/temporalInputPartitions.spec.js new file mode 100644 index 0000000..f7cfc54 --- /dev/null +++ b/tests/e2e/temporalInputPartitions.spec.js @@ -0,0 +1,51 @@ +import { test, expect } from './support/test.js'; +import { activeQuestion, expectHealthyHarness, goNext, openParticipant } from './support/harness.js'; + +const STANDARD_DESKTOPS = new Set(['chromium-desktop', 'firefox-desktop', 'webkit-desktop']); + +const INPUTS = [ + { + id: 'DATE_DYNAMIC', type: 'date', + markup: '|date|id=DATE_DYNAMIC min=valueOrDefault(\'D_DATE_MIN\',\'2024-07-10\') max=valueOrDefault(\'D_DATE_MAX\',\'2024-07-20\')|', + values: [['', false], ['2024-07-10', true], ['2024-07-20', true], ['2024-07-09', false], ['2024-07-21', false]], + }, + { + id: 'MONTH_DYNAMIC', type: 'month', + markup: '|month|id=MONTH_DYNAMIC min=valueOrDefault(\'D_123456789_0_0\',\'2024-03\') max=valueOrDefault(\'D_987654321_0_0\',\'2024-09\')|', + values: [['', false], ['2024-03', true], ['2024-09', true], ['2024-02', false], ['2024-10', false]], + }, + { + id: 'TIME_STATIC', type: 'time', + markup: '|time|id=TIME_STATIC min=09:00 max=17:00|', + values: [['', false], ['09:00', true], ['17:00', true], ['08:59', false], ['17:01', false]], + }, + { + id: 'NUMBER_DYNAMIC', type: 'number', + markup: '|__|__|id=NUMBER_DYNAMIC min=_value(\'age\') max=sum(age,5)|', + values: [['', false], ['45', true], ['50', true], ['44', false], ['51', false]], + }, +]; + +function surveyFor(input) { + return `{"name":"TEST_${input.id}"}\n\n[${input.id}?] Enter a value.\n${input.markup}\n\n[END,end] Complete.`; +} + +test.describe('temporal and dynamic numeric validation @core @canonical', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip(!STANDARD_DESKTOPS.has(testInfo.project.name), 'Validation runs in the three desktop engines.'); + }); + + for (const input of INPUTS) { + test(`${input.type} accepts its valid boundary values and rejects its out-of-range values`, async ({ page }) => { + for (const [value, valid] of input.values) { + await openParticipant(page, { markdown: surveyFor(input), previousResults: { age: '45' } }); + const control = activeQuestion(page, input.id).locator(`#${input.id}`); + if (value) await control.fill(value); + await goNext(page); + if (valid) await expect(activeQuestion(page, 'END')).toBeVisible(); + else await expect(activeQuestion(page, input.id)).toBeVisible(); + await expectHealthyHarness(page); + } + }); + } +}); diff --git a/tests/e2e/visual.spec.js b/tests/e2e/visual.spec.js new file mode 100644 index 0000000..e2c714c --- /dev/null +++ b/tests/e2e/visual.spec.js @@ -0,0 +1,109 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + goNext, + openParticipant, + readCanonicalFixture, + selectLabeledResponse, + waitInHarness, +} from './support/harness.js'; +import { + installAuthoringRoutes, + renderAuthoringMarkdown, + waitForAuthoringReady, +} from './support/authoring.js'; + +async function stabilizeVisual(page, testInfo) { + testInfo.snapshotSuffix = ''; + await page.mouse.move(0, 0); + await page.addStyleTag({ + content: ` + #questionnaireRoot, + #questionnaireRoot *, + #tool, + #tool * { + -webkit-text-fill-color: transparent !important; + text-shadow: none !important; + } + `, + }); +} + +const screenshotOptions = { + animations: 'disabled', + caret: 'hide', + maxDiffPixelRatio: 0.01, + scale: 'css', +}; + +test.describe('stable participant styling @visual', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + testInfo.project.name !== 'chromium-desktop', + 'The visual baseline is intentionally limited to locked desktop Chromium.', + ); + }); + + test('keeps the selected-response and action layout', async ({ page }, testInfo) => { + // Text is made transparent below so platform font rasterization is not compared. + await openParticipant(page); + await selectLabeledResponse(page, 'Blue'); + await stabilizeVisual(page, testInfo); + + await expect(activeQuestion(page, 'CHOICE')).toHaveScreenshot( + 'participant-choice-layout.png', + screenshotOptions, + ); + }); + + test('keeps validation and modal states visually reviewable', async ({ page }, testInfo) => { + await openParticipant(page, { fixture: 'validation.txt' }); + await activeQuestion(page, 'BOUNDED').locator('#bounded').fill('9'); + await goNext(page); + await expect(activeQuestion(page).locator('.validation-container')).toBeVisible(); + await stabilizeVisual(page, testInfo); + + await expect(activeQuestion(page, 'BOUNDED')).toHaveScreenshot( + 'participant-validation-state.png', + screenshotOptions, + ); + + await page.reload(); + await page.waitForFunction(() => window.questHarness?.ready === true); + await page.evaluate((markdown) => window.questHarness.render({ markdown }), readCanonicalFixture('runtimeControls.txt')); + await goNext(page); + await expect(page.locator('#softModal')).toHaveClass(/show/); + await stabilizeVisual(page, testInfo); + await expect(page.locator('#softModal .modal-content')).toHaveScreenshot( + 'participant-soft-modal.png', + screenshotOptions, + ); + }); + + test('keeps keyboard focus visible on an active text control', async ({ page }, testInfo) => { + await openParticipant(page, { fixture: 'navigationState.txt' }); + await selectLabeledResponse(page, 'Yes'); + await goNext(page); + await waitInHarness(page, 550); + await activeQuestion(page, 'DETAIL').locator('#detail').focus(); + await stabilizeVisual(page, testInfo); + + await expect(activeQuestion(page, 'DETAIL')).toHaveScreenshot( + 'participant-keyboard-focus.png', + screenshotOptions, + ); + }); + + test('keeps the authoring workspace layout stable', async ({ page, diagnostics }, testInfo) => { + await installAuthoringRoutes(page, diagnostics); + await page.goto('/index.html'); + await waitForAuthoringReady(page); + await renderAuthoringMarkdown(page, readCanonicalFixture('runtimeControls.txt')); + await stabilizeVisual(page, testInfo); + + await expect(page.locator('#tool')).toHaveScreenshot('authoring-workspace.png', { + ...screenshotOptions, + maxDiffPixelRatio: 0.02, + }); + }); +}); diff --git a/tests/e2e/visual.spec.js-snapshots/authoring-workspace-chromium-desktop.png b/tests/e2e/visual.spec.js-snapshots/authoring-workspace-chromium-desktop.png new file mode 100644 index 0000000..fb87553 Binary files /dev/null and b/tests/e2e/visual.spec.js-snapshots/authoring-workspace-chromium-desktop.png differ diff --git a/tests/e2e/visual.spec.js-snapshots/participant-choice-layout-chromium-desktop.png b/tests/e2e/visual.spec.js-snapshots/participant-choice-layout-chromium-desktop.png new file mode 100644 index 0000000..af38443 Binary files /dev/null and b/tests/e2e/visual.spec.js-snapshots/participant-choice-layout-chromium-desktop.png differ diff --git a/tests/e2e/visual.spec.js-snapshots/participant-keyboard-focus-chromium-desktop.png b/tests/e2e/visual.spec.js-snapshots/participant-keyboard-focus-chromium-desktop.png new file mode 100644 index 0000000..23d0bc6 Binary files /dev/null and b/tests/e2e/visual.spec.js-snapshots/participant-keyboard-focus-chromium-desktop.png differ diff --git a/tests/e2e/visual.spec.js-snapshots/participant-soft-modal-chromium-desktop.png b/tests/e2e/visual.spec.js-snapshots/participant-soft-modal-chromium-desktop.png new file mode 100644 index 0000000..fa7638b Binary files /dev/null and b/tests/e2e/visual.spec.js-snapshots/participant-soft-modal-chromium-desktop.png differ diff --git a/tests/e2e/visual.spec.js-snapshots/participant-validation-state-chromium-desktop.png b/tests/e2e/visual.spec.js-snapshots/participant-validation-state-chromium-desktop.png new file mode 100644 index 0000000..8a21095 Binary files /dev/null and b/tests/e2e/visual.spec.js-snapshots/participant-validation-state-chromium-desktop.png differ diff --git a/tests/e2e/windowsEnvironment.spec.js b/tests/e2e/windowsEnvironment.spec.js new file mode 100644 index 0000000..98695d1 --- /dev/null +++ b/tests/e2e/windowsEnvironment.spec.js @@ -0,0 +1,65 @@ +import { test, expect } from './support/test.js'; +import { + activeQuestion, + expectHealthyHarness, + goNext, + openParticipant, + selectLabeledResponse, + waitInHarness, +} from './support/harness.js'; + +test.describe('Windows-specific participant handling @canonical @windows-a11y', () => { + test.beforeEach(async ({}, testInfo) => { + test.skip( + testInfo.project.name !== 'chromium-windows-ua', + 'These checks characterize the Quest Windows user-agent branch used for JAWS support.', + ); + }); + + test('adds response-container tab stops and persists pointer selection', async ({ page }) => { + await openParticipant(page); + await expect(page.locator('.question.active .response')).toHaveCount(2); + await expect(page.locator('.question.active .response').first()).toHaveAttribute('tabindex', '0'); + + await selectLabeledResponse(page, 'Green'); + await expect(activeQuestion(page).locator('#CHOICE_2')).toBeChecked(); + await expectHealthyHarness(page); + }); + + test('moves the grid focus helper through the next row and terminal Next target after radio selections', async ({ page }) => { + await openParticipant(page, { fixture: 'gridResponsive.txt' }); + await goNext(page); + await waitInHarness(page, 550); + + const question = activeQuestion(page, 'GRID_RATE'); + await question.locator('tr[data-question-id="GRID_WALK"] label', { hasText: 'Sometimes' }).click(); + + await expect(question.locator('#srFocusHelper')).toBeFocused(); + await expect(question.locator('#qtextGRID_CYCLE #srFocusHelper')).toHaveCount(1); + await question.locator('tr[data-question-id="GRID_CYCLE"] label', { hasText: 'Often' }).click(); + + await expect(question.locator('#srFocusHelper')).toBeFocused(); + await expect(question.getByRole('button', { name: 'Next question' }).locator('#srFocusHelper')).toHaveCount(1); + await expectHealthyHarness(page); + }); + + test('keeps checkbox-grid focus in an intermediate cell and moves it to Next at the terminal cell', async ({ page }) => { + await openParticipant(page, { fixture: 'gridCheckboxFocus.txt' }); + await goNext(page); + await waitInHarness(page, 550); + const question = activeQuestion(page, 'GRID_CHECK'); + + const firstCell = question.locator('tr[data-question-id="GRID_CHECK_ROW_A"] td.response').first(); + await firstCell.locator('label', { hasText: 'Phone' }).click(); + await expect(firstCell.locator('#srFocusHelper')).toHaveCount(1); + await expect(question.locator('#srFocusHelper')).toBeFocused(); + + const terminalCell = question.locator('tr[data-question-id="GRID_CHECK_ROW_B"] td.response').last(); + await terminalCell.locator('label', { hasText: 'Email' }).click(); + await expect(question.getByRole('button', { name: 'Next question' }).locator('#srFocusHelper')).toHaveCount(1); + await expect(question.locator('#srFocusHelper')).toBeFocused(); + await expect(firstCell.locator('input[type="checkbox"]')).toBeChecked(); + await expect(terminalCell.locator('input[type="checkbox"]')).toBeChecked(); + await expectHealthyHarness(page); + }); +}); diff --git a/tests/fixtures/canonical/allConstructs.txt b/tests/fixtures/canonical/allConstructs.txt new file mode 100644 index 0000000..2ed2146 --- /dev/null +++ b/tests/fixtures/canonical/allConstructs.txt @@ -0,0 +1,81 @@ +// Renderer fixture for syntax that is uncommon or absent in the locked production survey corpus. +{"name":"TEST_ALL_CONSTRUCTS"} + +[PLAIN] Plain informational question with a user value {$u:firstName}, a saved value {$SAVED:fallback}, and an expression {#1 + 1}. +|displayif=equals(SHOW_INLINE,1)|Inline conditional text| +|displayif=equals(SHOW_BLOCK,1):|Block conditional text| +|displayList(LIST_VALUE)| +|displayList(LIST_VALUE):| +|popup|More information|Help title|Synthetic help text| +|image|episphere.github.io/quest/images/FemaleBaldness1.png|40,80| + +[RADIO?] Radio choices, including response metadata and an explicit skip. +(1) First radio +(2:RADIO_GROUP|SECOND_RADIO_LABEL,displayif=equals(SHOW_RADIO,1)) Second radio -> CHECKBOX + +[CHECKBOX?|min-count=1 max-count=2|] Checkbox choices, including XOR/reset and response display logic. +[1] First checkbox +[2,displayif=equals(SHOW_CHECKBOX,1)] Second checkbox +[99*] None of these + +[COMBINED?] Checkbox with an embedded text box and skip. +[807835037|COMBINED_OTHER_LABEL] Other [text box:COMBINED_TEXT] -> EMAIL + +[COMBINED_TEXTAREA?] Radio with an embedded text area and skip. +(1:COMBINED_TEXTAREA_GROUP|COMBINED_TEXTAREA_LABEL) Other details -> EMAIL + +[CONFIRM?] Authored confirmation relationship. + + + +[EMAIL?] Email address |@|id=EMAIL_VALUE| + +[PHONE?] Telephone |tel|id=PHONE_VALUE| + +[FULL_SSN?] Full SSN |SSN|id=FULL_SSN_VALUE| + +[SHORT_SSN?] Last four SSN digits |SSNsm|id=SHORT_SSN_VALUE| + +[ZIP?] ZIP code |zip|id=ZIP_VALUE| + +[STATE?] State |state|id=STATE_VALUE| + +[DATE?] Date |date|id=DATE_VALUE min=2020-01-01 max=2030-12-31| + +[MONTH?] Month |month|id=MONTH_VALUE min=2020-01 max=2030-12| + +[TIME?] Time |time|id=TIME_VALUE| + +[NUMBER?] Number |__|__|id=NUMBER_VALUE min=1 max=10| + +[TEXT?] Text before |__|id=TEXT_VALUE minlen=2 maxlen=12| text after. + +[TEXTBOX?] Text-box macro [text box:TEXTBOX_VALUE] + +[TEXTAREA?] Long answer |___|TEXTAREA_VALUE| + +[HIDDEN] Hidden host value |hidden|id=HIDDEN_VALUE| + +[YES_NO?] Yes/no macro. #YN + +[YES_NO_PREFER?] Yes/no/prefer-not macro. #YNP + +[DEFAULT_SKIP] Default hidden transition. +< -> GRID_RADIO > + +[NO_RESPONSE_SKIP?] No-response transition. +|__|id=OPTIONAL_VALUE| +< #NR -> GRID_RADIO > + +|grid?|id="GRID_RADIO" displayif=equals(SHOW_GRID,1)|Radio grid {$u:firstName}|[GRID_ROW_A] First row;[GRID_ROW_B,displayif=equals(SHOW_ROW,1)] Second row;|(1: Never)(2: Often)| + +|grid!|id="GRID_CHECKBOX"|Checkbox grid|[GRID_CHECK_ROW] A row;|[1: Alpha][2: Beta]| + +[D_900000002?] Loop count |__|__|id=D_900000002 min=0 max=2| + + +[LOOP_ITEM?,displayif=greaterThanOrEqual(D_900000002,#loop)] Loop item {##}. +|__|id=LOOP_ITEM_VALUE| + + +[END,end] Construct rendering complete. diff --git a/tests/fixtures/canonical/asyncQuestion.txt b/tests/fixtures/canonical/asyncQuestion.txt new file mode 100644 index 0000000..ea590b0 --- /dev/null +++ b/tests/fixtures/canonical/asyncQuestion.txt @@ -0,0 +1,10 @@ +// Canonical host-provided asynchronous question fixture. +{"name":"TEST_ASYNC"} + +[SEED?] Select a category. +(1) Clinical +(2) Research + +[ASYNC?] + +[END,end] You have reached the end of this test survey. Submit your answers. diff --git a/tests/fixtures/canonical/gridCheckboxFocus.txt b/tests/fixtures/canonical/gridCheckboxFocus.txt new file mode 100644 index 0000000..44e6406 --- /dev/null +++ b/tests/fixtures/canonical/gridCheckboxFocus.txt @@ -0,0 +1,8 @@ +// Canonical Windows focus fixture for checkbox-grid cell and terminal branches. +{"name":"TEST_GRID_CHECKBOX_FOCUS"} + +[GRID_LEAD] The next question uses a checkbox response grid. + +|grid!|id="GRID_CHECK"|Which support options apply?|[GRID_CHECK_ROW_A] First need;[GRID_CHECK_ROW_B] Second need;|[1: Phone][2: Email]| + +[END,end] You have reached the end of this test survey. Submit your answers. diff --git a/tests/fixtures/canonical/gridResponsive.txt b/tests/fixtures/canonical/gridResponsive.txt new file mode 100644 index 0000000..b09ecc5 --- /dev/null +++ b/tests/fixtures/canonical/gridResponsive.txt @@ -0,0 +1,8 @@ +// Responsive radio-grid fixture. +{"name":"TEST_GRID"} + +[GRID_LEAD] The next question uses a response grid. + +|grid?|id="GRID_RATE"|How often do you do each activity?|[GRID_WALK] Walking;[GRID_CYCLE] Cycling;]|[(1: Never)(2: Sometimes)(3: Often)]| + +[END,end] You have reached the end of this test survey. Submit your answers. diff --git a/tests/fixtures/canonical/imageAlt.txt b/tests/fixtures/canonical/imageAlt.txt new file mode 100644 index 0000000..03445e4 --- /dev/null +++ b/tests/fixtures/canonical/imageAlt.txt @@ -0,0 +1,4 @@ +{"name":"TEST_IMAGE_ALT"} + +[PLAIN] Reference image for a participant-facing choice. +|image|episphere.github.io/quest/images/FemaleBaldness1.png|40,80| diff --git a/tests/fixtures/canonical/loopBoundaries.txt b/tests/fixtures/canonical/loopBoundaries.txt new file mode 100644 index 0000000..4f15fc9 --- /dev/null +++ b/tests/fixtures/canonical/loopBoundaries.txt @@ -0,0 +1,12 @@ +// 0/1/2/25 iteration boundary fixture. +{"name":"TEST_LOOP_BOUNDARIES"} + +[D_900000001!] How many loop iterations should run? +|__|__|id=D_900000001 min=0 max=25| + + +[ITEM?,displayif=greaterThanOrEqual(D_900000001,#loop)] Confirm the {##} loop iteration. +(1) Continue + + +[END,end] Loop navigation complete. diff --git a/tests/fixtures/canonical/module4AddressPaths.txt b/tests/fixtures/canonical/module4AddressPaths.txt new file mode 100644 index 0000000..08511cd --- /dev/null +++ b/tests/fixtures/canonical/module4AddressPaths.txt @@ -0,0 +1,50 @@ +// Production-shaped extract from locked prod/module4.txt (D_716117817 v2.0). +{"name":"D_716117817"} + +[D_121490150?] What is the full street address of the place where you live now? + +Street number |__|id=D_255248624 minlen=0 maxlen=6| +Full Street name |__|id=D_945532934| +Apartment, suite, unit, building, etc. |__|id=D_469838242| +City |__|id=D_303500597| +State/Province |__|id=D_195068098| +Zip code |__|id=D_202784871| +Country |__|id=D_831127170| + +[D_920576363?,displayif=or(or(isNotDefined(D_303500597,false),isNotDefined(D_195068098,false)),or(isNotDefined(D_202784871,false),isNotDefined(D_831127170,false)))] Please provide the following information: + +City: |displayif=exists("D_303500597")|{$D_303500597}| +|__|id=D_725583683 displayif=doesNotExist("D_303500597")| + +State/Province: |displayif=exists("D_195068098")| {$D_195068098}| +|__|id=D_917021073 displayif=doesNotExist("D_195068098")| + +Zip code: |displayif=exists("D_202784871") | {$D_202784871}| +|__|id=D_970000442 displayif=doesNotExist("D_202784871")| + +Country: |displayif=exists("D_831127170")| {$D_831127170}| +|__|id=D_500100435 displayif=doesNotExist("D_831127170")| +[178420302*] Don't know + +[D_804504024?,displayif=noneExist("D_255248624","D_945532934") and someExist("D_725583683","D_917021073","D_970000442","D_500100435","D_303500597","D_195068098","D_202784871","D_831127170")] Please provide the cross streets of the intersection closest to this address: + +Full Street name #1 |__|id=D_105043152| +Full Street name #2 |__|id=D_543135391| +[178420302*] Don't know + +[HOMEADD4_1] Here is the information you gave us for this location: + +|displayif=noneExist("D_255248624","D_945532934","D_469838242","D_303500597","D_725583683","D_195068098","D_917021073","D_202784871","D_970000442","D_831127170","D_500100435")|current address
||displayif=someExist("D_255248624","D_945532934","D_469838242","D_303500597","D_725583683","D_195068098","D_917021073","D_202784871","D_970000442","D_831127170","D_500100435")| {$D_105043152} {$D_543135391} {$D_255248624} {$D_945532934} {$D_469838242} {$D_303500597} {$D_725583683} {$D_195068098} {$D_917021073} {$D_202784871} {$D_970000442} {$D_831127170} {$D_500100435}| + +If this information is not correct, please click the “Back” button to edit your answers before moving on. + +[D_290969423?] Within the past 20 years, have you lived anywhere else for at least two years? +(353358909) Yes -> D_574985342 +(104430631) No -> END + +[D_574985342?] What is the full street address of the place you lived before you lived at |displayif=someExist("D_255248624","D_945532934","D_469838242","D_303500597","D_725583683","D_195068098","D_917021073","D_202784871","D_970000442","D_831127170","D_500100435")|{$D_105043152} {$D_543135391} {$D_255248624} {$D_945532934} {$D_469838242} {$D_303500597} {$D_725583683} {$D_195068098} {$D_917021073} {$D_970000442} {$D_831127170} {$D_500100435}||displayif=noneExist("D_255248624","D_945532934","D_469838242","D_303500597","D_725583683","D_195068098","D_917021073","D_202784871","D_970000442","D_831127170","D_500100435")|Current Address|? Please only include addresses where you have lived for at least two years. + +Street number |__|id=D_985267931 minlen=0 maxlen=6| +Full Street name |__|id=D_111275683| + +[END,end] Done. diff --git a/tests/fixtures/canonical/module4AddressPathsSpanish.txt b/tests/fixtures/canonical/module4AddressPathsSpanish.txt new file mode 100644 index 0000000..cc963fa --- /dev/null +++ b/tests/fixtures/canonical/module4AddressPathsSpanish.txt @@ -0,0 +1,39 @@ +// Production-shaped extract from locked prod/module4Spanish.txt (D_716117817 v2.0). +{"name":"D_716117817"} + +[D_121490150?]¿Cuál es la dirección completa del lugar donde vive actualmente? + +Número de la calle |__|id=D_255248624 minlen=0 maxlen=6| +Nombre completo de la calle |__|id=D_945532934| +Apartamento, suite, unidad, edificio, etc. |__|id=D_469838242| +Ciudad |__|id=D_303500597| +Estado o provincia |__|id=D_195068098| +Código postal |__|id=D_202784871| +País |__|id=D_831127170| + +[D_920576363?,displayif=or(or(isNotDefined(D_303500597,false),isNotDefined(D_195068098,false)),or(isNotDefined(D_202784871,false),isNotDefined(D_831127170,false)))] Suministre la siguiente información: + +Ciudad: |displayif=exists("D_303500597")| {$D_303500597}| +|__|id=D_725583683 displayif=doesNotExist("D_303500597")| + +Estado o provincia: |displayif=exists("D_195068098")| {$D_195068098}| +|__|id=D_917021073 displayif=doesNotExist("D_195068098")| + +Código postal: |displayif=exists("D_202784871") | {$D_202784871}| +|__|id=D_970000442 displayif=doesNotExist("D_202784871")| + +País: |displayif=exists("D_831127170")| {$D_831127170}| +|__|id=D_500100435 displayif=doesNotExist("D_831127170")| +[178420302*] No sé + +[D_804504024?,displayif=noneExist("D_255248624","D_945532934") and someExist("D_725583683","D_917021073","D_970000442","D_500100435","D_303500597","D_195068098","D_202784871","D_831127170")] Indique las calles que cruzan la intersección más cercana a esta dirección: + +Nombre completo de la calle #1 |__|id=D_105043152| +Nombre completo de la calle #2 |__|id=D_543135391| +[178420302*] No sé + +[HOMEADD4_1] Esta es la información que nos dio para esta ubicación: + +|displayif=someExist("D_255248624","D_945532934","D_469838242","D_303500597","D_725583683","D_195068098","D_917021073","D_202784871","D_970000442","D_831127170","D_500100435")| {$D_105043152} {$D_543135391} {$D_255248624} {$D_945532934} {$D_469838242} {$D_303500597}{$D_725583683} {$D_195068098}{$D_917021073} {$D_202784871}{$D_970000442} {$D_831127170}{$D_500100435}
||displayif=noneExist("D_255248624","D_945532934","D_469838242","D_303500597","D_725583683","D_195068098","D_917021073","D_202784871","D_970000442","D_831127170","D_500100435")|Dirección actual| + +[END,end] Fin. diff --git a/tests/fixtures/canonical/nativeSelect.txt b/tests/fixtures/canonical/nativeSelect.txt new file mode 100644 index 0000000..41c63bb --- /dev/null +++ b/tests/fixtures/canonical/nativeSelect.txt @@ -0,0 +1,6 @@ +{"name":"TEST_NATIVE_SELECT"} + +[STATE?] In which state do you live? +|state|id=home_state| + +[END,end] Complete. diff --git a/tests/fixtures/canonical/navigationBoundaries.txt b/tests/fixtures/canonical/navigationBoundaries.txt new file mode 100644 index 0000000..95bc9cb --- /dev/null +++ b/tests/fixtures/canonical/navigationBoundaries.txt @@ -0,0 +1,23 @@ +// Default, no-response, explicit-skip, sequential, reset, and back fixture. +{"name":"TEST_BOUNDARIES"} + +[DEFAULT_SOURCE] Continue to the branch question using the default hidden transition. +< -> PATH > + +[DEFAULT_MISS] This question must never be reached from the default transition. + +[PATH?] Choose a route, or leave this unanswered to take the no-response route. +(1) Explicit route -> EXPLICIT_TARGET +(2) Sequential route +< #NR -> NO_RESPONSE_TARGET > + +[SEQUENTIAL_TARGET] The sequential route was reached. +< -> END > + +[EXPLICIT_TARGET] The explicit route was reached. +< -> END > + +[NO_RESPONSE_TARGET] The no-response route was reached. +< -> END > + +[END,end] Boundary navigation complete. diff --git a/tests/fixtures/canonical/navigationState.txt b/tests/fixtures/canonical/navigationState.txt new file mode 100644 index 0000000..5c3cab3 --- /dev/null +++ b/tests/fixtures/canonical/navigationState.txt @@ -0,0 +1,13 @@ +// Navigation, conditional skip, restore, and submission fixture. +{"name":"TEST_NAV"} + +[PATH?] Would you like to answer a detail question? +(1) Yes -> DETAIL +(0) No -> SUMMARY + +[DETAIL?] Add a short detail. +|__|id=detail minlen=2 maxlen=30| + +[SUMMARY] Review your answers, then continue. + +[END,end] You have reached the end of this test survey. Submit your answers. diff --git a/tests/fixtures/canonical/nestedTextPresence.txt b/tests/fixtures/canonical/nestedTextPresence.txt new file mode 100644 index 0000000..ae0b0fb --- /dev/null +++ b/tests/fixtures/canonical/nestedTextPresence.txt @@ -0,0 +1,18 @@ +// Regression fixture for production-shaped nested text controls used by presence conditions. +{"name":"TEST_NESTED_TEXT_PRESENCE"} + +[D_470013848?] Which type of phone do you use? +[807835037] Other phone |__|id=D_495052121| + +[D_731524314?] Which type of tablet do you use? +[807835037] Other tablet |__|id=D_638847244| + +[D_403175318?] Which type of computer do you use? +[807835037] Other computer |__|id=D_507471937| + +[D_260186214?] Which device do you use most often? +(793072415,displayif=equals(D_470013848,807835037)) {$D_495052121} |displayif=doesNotExist("D_495052121")|Other phone| +(401230883,displayif=equals(D_731524314,807835037)) {$D_638847244} |displayif=doesNotExist("D_638847244")|Other tablet| +(320254475,displayif=equals(D_403175318,807835037)) {$D_507471937} |displayif=doesNotExist("D_507471937")|Other computer| + +[END,end] End of regression fixture. diff --git a/tests/fixtures/canonical/runtimeControls.txt b/tests/fixtures/canonical/runtimeControls.txt new file mode 100644 index 0000000..a67ed5b --- /dev/null +++ b/tests/fixtures/canonical/runtimeControls.txt @@ -0,0 +1,27 @@ +// Canonical participant fixture: one stable example of each common control. +{"name":"TEST_RUNTIME"} + +[CHOICE?] Which color do you prefer? +(1) Blue +(2) Green + +[CHECKS?] Which messages would you like to receive? Select all that apply. +[1] Email +[2] Text message + +[TEXT?] What nickname should we use? +|__|id=nickname minlen=2 maxlen=20| + +[NUMBER?] How many visits have you completed? +|__|__|id=visit_count min=1 max=10| + +[STATE?] In which state do you live? +|state|id=home_state| + +[DATE?] What was the date of your latest visit? +|date|id=visit_date| + +[TIME?] What time did your latest visit begin? +|time|id=visit_time| + +[END,end] You have reached the end of this test survey. Submit your answers. diff --git a/tests/fixtures/canonical/validation.txt b/tests/fixtures/canonical/validation.txt new file mode 100644 index 0000000..3646bb4 --- /dev/null +++ b/tests/fixtures/canonical/validation.txt @@ -0,0 +1,6 @@ +{"name":"TEST_VALIDATE"} + +[BOUNDED?] Enter a number from 1 through 3. +|__|__|id=bounded min=1 max=3| + +[END,end] You have reached the end of this test survey. Submit your answers. diff --git a/tests/harness/connectHost.css b/tests/harness/connectHost.css new file mode 100644 index 0000000..9a07eb2 --- /dev/null +++ b/tests/harness/connectHost.css @@ -0,0 +1,38 @@ +:root { + color-scheme: light; + font-family: Arial, sans-serif; +} + +body { + margin: 0; + background: #fff; + color: #212529; +} + +.connect-container { + width: min(100%, 1200px); + margin: 0 auto; +} + +.connect-test-header, +.connect-test-footer { + padding: 0.75rem 1rem; + background: #f5f7f9; +} + +.connect-test-header { + border-bottom: 1px solid #d9dee3; +} + +.connect-test-footer { + border-top: 1px solid #d9dee3; +} + +#root { + min-height: 28rem; + padding: 0 0.75rem 1.5rem; +} + +#questionnaireRoot { + min-width: 0; +} diff --git a/tests/harness/mathjsLocal.js b/tests/harness/mathjsLocal.js new file mode 100644 index 0000000..41b55d3 --- /dev/null +++ b/tests/harness/mathjsLocal.js @@ -0,0 +1,3 @@ +// Browser-test import-map for Quest's exact production CDN specifier. +// Vite resolves this import to the suite's pinned, local dependency. +export { all, create } from 'mathjs'; diff --git a/tests/harness/participant.html b/tests/harness/participant.html new file mode 100644 index 0000000..e139781 --- /dev/null +++ b/tests/harness/participant.html @@ -0,0 +1,43 @@ + + + + + + Quest participant harness + + + +
+
+ Participant dashboard +
+ +
+
+
+ + + +
+
+
+ + +
+ + + + diff --git a/tests/harness/participant.js b/tests/harness/participant.js new file mode 100644 index 0000000..8911d3b --- /dev/null +++ b/tests/harness/participant.js @@ -0,0 +1,253 @@ +import './connectHost.css'; +import 'bootstrap/dist/css/bootstrap.min.css'; +import '../../ActiveLogic.css'; +import '../../Style1.css'; + +import * as bootstrap from 'bootstrap'; +import { transform } from '../../main.js'; +import { getStateManager } from '../../stateManager.js'; + +globalThis.bootstrap = bootstrap; + +const questRoot = document.getElementById('questionnaireRoot'); +const eventTypes = ['click', 'change', 'input', 'keydown', 'keyup', 'focusin', 'focusout', 'submit']; +const pendingStores = new Set(); +const pendingAsyncLoads = new Set(); +let storeSettlementSequence = 0; + +let rendered = false; +let currentConfig = {}; + +const logs = { + renders: [], + storeCalls: [], + retrieveCalls: [], + asyncCalls: [], + errors: [], + events: [], + host: { keydownCount: 0 }, +}; + +const wait = (milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)); + +function serializable(value, depth = 0, seen = new WeakSet()) { + if (value == null || ['string', 'number', 'boolean'].includes(typeof value)) return value; + if (typeof value === 'bigint') return value.toString(); + if (typeof value === 'function') return `[Function ${value.name || 'anonymous'}]`; + if (value instanceof Date) return value.toISOString(); + if (value instanceof Error) return { name: value.name, message: value.message, stack: value.stack, code: value.code }; + if (value instanceof Element) return describeTarget(value); + if (depth >= 10) return String(value); + if (typeof value === 'object') { + if (seen.has(value)) return '[Circular]'; + seen.add(value); + if (Array.isArray(value)) return value.map((item) => serializable(item, depth + 1, seen)); + return Object.fromEntries(Object.entries(value).map(([key, child]) => [key, serializable(child, depth + 1, seen)])); + } + return String(value); +} + +function describeTarget(target) { + if (!(target instanceof Element)) return String(target); + return { + tag: target.tagName.toLowerCase(), + id: target.id || null, + name: target.getAttribute('name'), + type: target.getAttribute('type'), + className: typeof target.className === 'string' ? target.className : null, + }; +} + +for (const type of eventTypes) { + document.addEventListener(type, (event) => { + if (type === 'keydown') logs.host.keydownCount += 1; + if (logs.events.length < 500) logs.events.push({ + type, + key: 'key' in event ? event.key : null, + defaultPrevented: event.defaultPrevented, + target: describeTarget(event.target), + }); + }); +} + +function trackPromise(promise, collection) { + collection.add(promise); + promise.then(() => collection.delete(promise), () => collection.delete(promise)); + return promise; +} + +function configuredOutcome(outcomes, callIndex) { + if (!Array.isArray(outcomes) || outcomes.length === 0) return { kind: 'resolve', value: { code: 200 } }; + return outcomes[Math.min(callIndex, outcomes.length - 1)] ?? { kind: 'resolve', value: { code: 200 } }; +} + +function makeStore() { + return (changes) => { + const outcome = configuredOutcome(currentConfig.storeOutcomes, logs.storeCalls.length); + const call = { + changes: serializable(changes), + outcome: serializable(outcome), + status: 'pending', + settlementIndex: null, + }; + logs.storeCalls.push(call); + const operation = (async () => { + try { + if (outcome.delayMs) await wait(outcome.delayMs); + if (outcome.kind === 'reject') { + const error = new Error(outcome.message || 'Synthetic store rejection'); + if (outcome.code != null) error.code = outcome.code; + throw error; + } + const value = outcome.value ?? { code: outcome.code ?? 200 }; + call.status = 'fulfilled'; + call.value = serializable(value); + return value; + } catch (error) { + call.status = 'rejected'; + call.error = serializable(error); + throw error; + } finally { + storeSettlementSequence += 1; + call.settlementIndex = storeSettlementSequence; + } + })(); + return trackPromise(operation, pendingStores); + }; +} + +function makeRetrieve() { + return async () => { + logs.retrieveCalls.push({ at: new Date().toISOString() }); + if (currentConfig.retrieveDelayMs) await wait(currentConfig.retrieveDelayMs); + if (currentConfig.retrieveError) throw new Error(currentConfig.retrieveError); + if (Object.hasOwn(currentConfig, 'retrieveResponse')) return currentConfig.retrieveResponse; + return { data: { fixture: currentConfig.persistedData ?? {} } }; + }; +} + +function makeAsyncQuestionLoader() { + return (func, args) => { + const outcome = configuredOutcome(currentConfig.asyncOutcomes, logs.asyncCalls.length); + const call = { func: serializable(func), args: serializable(args), outcome: serializable(outcome), status: 'pending' }; + logs.asyncCalls.push(call); + const operation = (async () => { + try { + const delayMs = outcome.delayMs ?? currentConfig.asyncDelayMs ?? 0; + if (delayMs) await wait(delayMs); + if (outcome.kind === 'reject') throw new Error(outcome.message || 'Synthetic async question rejection'); + const target = questRoot.querySelector('form.question.active fieldset, form.question.active tbody'); + if (target && currentConfig.asyncQuestionHtml) target.innerHTML = currentConfig.asyncQuestionHtml; + call.status = 'fulfilled'; + call.value = serializable(outcome.value); + return outcome.value; + } catch (error) { + call.status = 'rejected'; + call.error = serializable(error); + throw error; + } + })(); + return trackPromise(operation, pendingAsyncLoads); + }; +} + +function errorLogger(...args) { + logs.errors.push({ + message: args.map((arg) => arg instanceof Error ? arg.message : String(arg)).join(' '), + args: serializable(args), + }); +} + +async function flush() { + while (pendingStores.size > 0 || pendingAsyncLoads.size > 0) { + await Promise.allSettled([...pendingStores, ...pendingAsyncLoads]); + } + await wait(0); +} + +function stateSnapshot() { + const stateManager = getStateManager(true); + return stateManager ? { + survey: serializable(stateManager.getSurveyState()), + active: serializable(stateManager.getActiveQuestionState()), + mapping: serializable(stateManager.getResponseToQuestionMapping()), + cache: serializable(stateManager.getCache()), + } : null; +} + +function snapshot() { + return serializable({ + activeQuestionId: questRoot.querySelector('form.question.active')?.id ?? null, + focusedElement: describeTarget(document.activeElement), + state: stateSnapshot(), + logs, + }); +} + +function normalizeHarnessConfig(config) { + const normalized = { ...config, markdown: config.markdown ?? config.text ?? '' }; + if (config.retrieveResponse !== undefined || config.retrieveResult !== undefined) normalized.retrieveResponse = config.retrieveResponse ?? config.retrieveResult; + if (config.showProgressBarInQuest !== undefined || config.showProgress !== undefined) normalized.showProgressBarInQuest = config.showProgressBarInQuest ?? config.showProgress; + if (config.asyncOutcomes !== undefined || config.asyncFixtures?.outcomes !== undefined) normalized.asyncOutcomes = config.asyncOutcomes ?? config.asyncFixtures.outcomes; + if (config.asyncQuestionHtml !== undefined || config.asyncFixtures?.html !== undefined) normalized.asyncQuestionHtml = config.asyncQuestionHtml ?? config.asyncFixtures.html; + if (config.asyncDelayMs !== undefined || config.asyncFixtures?.delayMs !== undefined) normalized.asyncDelayMs = config.asyncDelayMs ?? config.asyncFixtures.delayMs; + if (!Object.hasOwn(config, 'surveyDataPrefetch')) { + if (Object.hasOwn(config, 'prefetch')) normalized.surveyDataPrefetch = config.prefetch; + else if (Object.hasOwn(config, 'persistedData')) normalized.surveyDataPrefetch = config.persistedData; + } + if (!Array.isArray(config.storeOutcomes) && config.storeMode) { + const delayMs = config.hostDelayMs ?? (config.storeMode === 'delayed' ? 50 : 0); + const outcome = { + success: { kind: 'resolve', value: { code: 200 } }, + non200: { kind: 'resolve', value: { code: 503, message: 'Synthetic non-200 store response' } }, + rejected: { kind: 'reject', message: 'Synthetic store rejection' }, + delayed: { kind: 'resolve', value: { code: 200 } }, + }[config.storeMode]; + if (outcome) normalized.storeOutcomes = [{ ...outcome, ...(delayMs ? { delayMs } : {}) }]; + } + return normalized; +} + +async function render(config = {}) { + if (rendered) throw new Error('Quest is stateful: participant harness permits one render per page. Reload for a fresh module graph.'); + rendered = true; + currentConfig = structuredClone(normalizeHarnessConfig(config)); + document.documentElement.lang = currentConfig.lang === 'es' ? 'es' : 'en'; + questRoot.style.visibility = 'hidden'; + const params = { + activate: currentConfig.activate ?? true, + asyncQuestionsMap: currentConfig.asyncQuestionsMap ?? {}, + delayedParameterArray: currentConfig.delayedParameterArray ?? [], + errorLogger, + fetchAsyncQuestion: makeAsyncQuestionLoader(), + lang: currentConfig.lang ?? 'en', + isRenderer: currentConfig.isRenderer ?? false, + questVersion: currentConfig.questVersion ?? 'test-local', + retrieve: makeRetrieve(), + showProgressBarInQuest: currentConfig.showProgressBarInQuest ?? true, + store: makeStore(), + text: currentConfig.markdown, + url: currentConfig.url ?? '', + }; + if (Object.hasOwn(currentConfig, 'surveyDataPrefetch')) params.surveyDataPrefetch = currentConfig.surveyDataPrefetch; + const result = await transform.render(params, 'questionnaireRoot', currentConfig.previousResults ?? {}); + questRoot.style.visibility = 'visible'; + logs.renders.push({ result, config: serializable(currentConfig) }); + await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + return { result, activeQuestionId: questRoot.querySelector('form.question.active')?.id ?? null, errorCount: logs.errors.length }; +} + +window.questHarness = { ready: true, render, snapshot, flush, wait }; +window.dispatchEvent(new CustomEvent('quest-harness-ready')); + +const manualFixture = new URLSearchParams(window.location.search).get('fixture'); +if (manualFixture) { + if (!/^[a-z0-9-]+\.txt$/i.test(manualFixture)) { + errorLogger(new Error(`Invalid manual fixture name: ${manualFixture}`)); + } else { + fetch(`/tests/fixtures/canonical/${manualFixture}`) + .then((response) => response.ok ? response.text() : Promise.reject(new Error(`Fixture request failed: ${response.status}`))) + .then((markdown) => render({ markdown })) + .catch(errorLogger); + } +} diff --git a/tests/helpers/questRuntime.js b/tests/helpers/questRuntime.js new file mode 100644 index 0000000..2faea86 --- /dev/null +++ b/tests/helpers/questRuntime.js @@ -0,0 +1,105 @@ +import { vi } from 'vitest'; + +export const SIMPLE_SURVEY = ` +{"name":"TEST_MODULE"} + +[Q1?] Choose one answer. +(1) First answer +(2) Second answer + +[Q2] Enter a value. +|__|id=Q2_TEXT minlen=2 maxlen=8| + +[END] Thank you. +`; + +function createStore(mode, calls, delay = 0) { + return vi.fn(async (payload) => { + calls.push(structuredClone(payload)); + if (delay) await new Promise((resolve) => setTimeout(resolve, delay)); + if (mode === 'reject') throw new Error('Configured store rejection'); + if (mode === 'non200') return { code: 503 }; + return { code: 200 }; + }); +} + +export async function renderFreshQuest({ + markdown = SIMPLE_SURVEY, + previousResults = {}, + persistedData, + retrieveResult, + params = {}, + storeMode = 'success', + storeDelay = 0, + rootId = 'questionnaireRoot', +} = {}) { + vi.resetModules(); + document.body.innerHTML = ` + Before Quest +
+
+
+
+
+
+
+ + `; + + const storeCalls = []; + const retrieveCalls = []; + const asyncCalls = []; + const errors = []; + const store = createStore(storeMode, storeCalls, storeDelay); + const retrieve = vi.fn(async () => { + retrieveCalls.push(true); + return retrieveResult; + }); + const fetchAsyncQuestion = vi.fn(async (...args) => { + asyncCalls.push(args); + return params.asyncResult ?? ''; + }); + + const { transform } = await import('../../main.js'); + const rendered = await transform.render({ + activate: true, + text: markdown, + lang: 'en', + showProgressBarInQuest: true, + store, + retrieve, + surveyDataPrefetch: persistedData, + asyncQuestionsMap: {}, + fetchAsyncQuestion, + errorLogger: (...values) => errors.push(values), + ...params, + }, rootId, previousResults); + + const { moduleParams, questionQueue } = await import('../../questionnaire.js'); + const { getStateManager } = await import('../../stateManager.js'); + const state = getStateManager(params.isRenderer ?? false); + + return { + transform, + rendered, + root: document.getElementById(rootId), + moduleParams, + questionQueue, + state, + store, + retrieve, + fetchAsyncQuestion, + calls: { store: storeCalls, retrieve: retrieveCalls, async: asyncCalls }, + errors, + }; +} + +export async function loadFreshModuleGraph() { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + const en = (await import('../../i18n/en.js')).default; + questionnaire.moduleParams.i18n = en; + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.questDiv = document.body; + return { questionnaire, en }; +} diff --git a/tests/integration/accessibilityBehavior.spec.js b/tests/integration/accessibilityBehavior.spec.js new file mode 100644 index 0000000..cdaea81 --- /dev/null +++ b/tests/integration/accessibilityBehavior.spec.js @@ -0,0 +1,138 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +const GRID_SURVEY = ` +{"name":"A11Y_GRID"} +[GRID_LEAD] Rate each item. +|grid?|id="GRID"|How often?|[ROW_ONE] First row;[ROW_TWO] Second row;|(1: Never)(2: Often)| +[END,end] Done. +`; + +function treeAt(questionID) { + return JSON.stringify({ + rootNode: { value: null, children: [{ value: questionID, children: [] }] }, + currentNode: questionID, + }); +} + +describe('screen-reader and keyboard behavior', () => { + beforeEach(() => vi.useFakeTimers()); + afterEach(() => { + vi.clearAllTimers(); + vi.useRealTimers(); + }); + + it('uses native list controls while adding Windows-specific refocus and announcements', async () => { + const quest = await renderFreshQuest(); + quest.moduleParams.isWindowsEnvironment = true; + const radio = quest.root.querySelector('#Q1_2'); + + radio.click(); + radio.dispatchEvent(new Event('change', { bubbles: true, cancelable: true })); + + await vi.advanceTimersByTimeAsync(100); + expect(document.activeElement).toBe(radio); + expect(quest.root.querySelector('#ariaLiveSelectionAnnouncer').textContent).toContain('Second answer Selected.'); + }); + + it('moves the Windows table focus helper to the next visible row after a radio selection', async () => { + const quest = await renderFreshQuest({ + markdown: GRID_SURVEY, + persistedData: { treeJSON: treeAt('GRID') }, + }); + quest.moduleParams.isWindowsEnvironment = true; + const firstRowChoice = quest.root.querySelector('#ROW_ONE_0'); + + firstRowChoice.click(); + firstRowChoice.dispatchEvent(new Event('change', { bubbles: true, cancelable: true })); + + const helper = quest.root.querySelector('#srFocusHelper'); + await vi.advanceTimersByTimeAsync(100); + expect(document.activeElement).toBe(helper); + expect(helper.closest('tr')?.dataset.questionId).toBe('ROW_TWO'); + expect(helper.parentElement.tagName).toBe('TH'); + }); + + it('moves the Windows table focus helper to Next after the final row selection', async () => { + const quest = await renderFreshQuest({ + markdown: GRID_SURVEY, + persistedData: { treeJSON: treeAt('GRID') }, + }); + quest.moduleParams.isWindowsEnvironment = true; + const finalRowChoice = quest.root.querySelector('#ROW_TWO_1'); + + finalRowChoice.click(); + finalRowChoice.dispatchEvent(new Event('change', { bubbles: true, cancelable: true })); + + const helper = quest.root.querySelector('#srFocusHelper'); + await vi.advanceTimersByTimeAsync(100); + expect(document.activeElement).toBe(helper); + expect(helper.closest('button')).toBe(quest.root.querySelector('#GRID .next')); + }); + + it('announces table selections without adding non-native selection commands on macOS paths', async () => { + const quest = await renderFreshQuest({ + markdown: GRID_SURVEY, + persistedData: { treeJSON: treeAt('GRID') }, + }); + quest.moduleParams.isWindowsEnvironment = false; + const choice = quest.root.querySelector('#ROW_ONE_1'); + + choice.click(); + choice.dispatchEvent(new Event('change', { bubbles: true })); + + await vi.advanceTimersByTimeAsync(250); + expect(quest.root.querySelector('#ariaLiveSelectionAnnouncer').textContent.trim()).toBe('Often Selected.'); + expect(choice.getAttribute('role')).toBeNull(); + }); + + it('uses Up and Down only to leave nested text fields, without overriding radio native keys', async () => { + const quest = await renderFreshQuest(); + const fieldset = quest.root.querySelector('#Q1 fieldset'); + fieldset.innerHTML = ` + Other responses. +
+
+ + `; + const firstText = fieldset.querySelector('#FIRST_TEXT'); + const secondText = fieldset.querySelector('#SECOND_TEXT'); + + secondText.focus(); + secondText.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key: 'ArrowUp' })); + await vi.advanceTimersByTimeAsync(0); + expect(document.activeElement).toBe(fieldset.querySelector('#FIRST_RADIO')); + + firstText.focus(); + firstText.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key: 'ArrowDown' })); + await vi.advanceTimersByTimeAsync(0); + expect(document.activeElement).not.toBe(firstText); + + const radio = fieldset.querySelector('#SECOND_RADIO'); + radio.focus(); + const nativeArrow = new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key: 'ArrowDown' }); + radio.dispatchEvent(nativeArrow); + expect(nativeArrow.defaultPrevented).toBe(false); + }); + + it('reconstructs and restores question focus after closing the soft-response modal', async () => { + const quest = await renderFreshQuest(); + const modal = quest.root.querySelector('#softModal'); + const focusTarget = quest.root.querySelector('#Q1 .screen-reader-focus'); + + // The initial render already schedules a 500 ms focus. Remove it so a + // passing assertion proves the close handler's 100 ms + 500 ms chain. + vi.clearAllTimers(); + expect(document.activeElement).not.toBe(focusTarget); + modal.style.display = 'block'; + + modal.dispatchEvent(new MouseEvent('click', { bubbles: true })); + + expect(modal.style.display).toBe('none'); + await vi.advanceTimersByTimeAsync(100); + expect(document.activeElement).not.toBe(focusTarget); + await vi.advanceTimersByTimeAsync(500); + expect(document.activeElement).toBe(focusTarget); + expect(quest.root.querySelectorAll('#Q1 .screen-reader-focus')).toHaveLength(1); + }); +}); diff --git a/tests/integration/accessibilityBuilder.spec.js b/tests/integration/accessibilityBuilder.spec.js new file mode 100644 index 0000000..43f8803 --- /dev/null +++ b/tests/integration/accessibilityBuilder.spec.js @@ -0,0 +1,242 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +async function loadAccessibilityFixture(markup) { + const quest = await renderFreshQuest(); + quest.moduleParams.isRenderer = true; + quest.root.innerHTML = markup; + const accessibility = await import('../../accessibleQuestionTextBuilder.js'); + return { quest, accessibility }; +} + +describe('accessible question text construction', () => { + it('builds a legend for heading-style prompts and normalizes excessive breaks', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
Section heading


Choose an answer.
+
+ `); + const fieldset = quest.root.querySelector('fieldset'); + + expect(accessibility.manageAccessibleQuestion(fieldset, false)).toBe(true); + + const legend = fieldset.querySelector('legend'); + expect(legend.textContent).toContain('Section heading'); + expect(legend.textContent).toContain('Choose an answer.'); + expect(fieldset.querySelectorAll('.screen-reader-focus')).toHaveLength(1); + expect([...fieldset.querySelectorAll('br')].every((br) => br.getAttribute('aria-hidden') === 'true')).toBe(true); + expect(fieldset.querySelectorAll('br').length).toBeLessThanOrEqual(3); + }); + + it('turns subsequent prompts in a multi-question fieldset into focusable alerts', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
Introductory prompt.
+ Follow-up question?
+
+
+ `); + const fieldset = quest.root.querySelector('fieldset'); + + accessibility.manageAccessibleQuestion(fieldset, false); + + const followUp = fieldset.querySelector('div[role="alert"][tabindex="0"]'); + expect(followUp).not.toBeNull(); + expect(followUp.textContent).toContain('Follow-up question?'); + expect(fieldset.querySelectorAll('.response')).toHaveLength(2); + }); + + it('creates a fieldset around table questions that do not originally have one', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+ Rate each item. +
Item
+
+ `); + const question = quest.root.querySelector('.question'); + + accessibility.manageAccessibleQuestion(question, false); + + const fieldset = question.querySelector('fieldset'); + expect(fieldset).not.toBeNull(); + expect(fieldset.querySelector('legend').textContent).toContain('Rate each item.'); + expect(fieldset.querySelector('table')).not.toBeNull(); + expect(fieldset.querySelector('.screen-reader-focus')).not.toBeNull(); + }); + + it('re-evaluates legend display conditions and cleans hidden conditional whitespace', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
+ Review visible hidden + outside detail
+
Next detail + hidden response spacing +
+
+ `); + const fieldset = quest.root.querySelector('fieldset'); + + accessibility.manageAccessibleQuestion(fieldset, false); + + const displayIfs = fieldset.querySelectorAll('legend .displayif'); + expect(displayIfs[0].style.display).toBe(''); + expect(displayIfs[1].style.display).toBe('none'); + expect(fieldset.querySelector('legend').textContent).not.toMatch(/ {3}/); + expect(fieldset.querySelector('.displayif[style*="display: block"]').getAttribute('hasupdate')).toBe('true'); + expect(fieldset.querySelector('.displayif[style*="display: none"] + br').style.display).toBe('none'); + }); + + it('updates a raw forid in an existing legend and avoids rebuilding focus controls', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
Hello old value
+
+ `); + const fieldset = quest.root.querySelector('fieldset'); + + accessibility.manageAccessibleQuestion(fieldset, false); + accessibility.manageAccessibleQuestion(fieldset, false); + + expect(fieldset.querySelector('[forid]').textContent).toBe('participant'); + expect(fieldset.querySelectorAll('.screen-reader-focus')).toHaveLength(1); + }); + + it('applies and idempotently records the pregnancy-summary spacing exception', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
Pregnancy summary.
Age when pregnancy began: 30


+
+ `); + const fieldset = quest.root.querySelector('fieldset'); + + accessibility.manageAccessibleQuestion(fieldset, false); + const breakCount = fieldset.querySelectorAll('br').length; + accessibility.manageAccessibleQuestion(fieldset, false); + + expect(fieldset.getAttribute('data-preg-summary-updated')).toBe('true'); + expect(fieldset.querySelectorAll('br')).toHaveLength(breakCount); + }); +}); + +describe('accessible selection focus and defensive paths', () => { + beforeEach(() => vi.useFakeTimers()); + afterEach(() => { + vi.clearAllTimers(); + vi.useRealTimers(); + }); + + it('keeps focus on a non-final table checkbox and announces its state', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
+ + + +
Row
+ `); + const input = quest.root.querySelector('#CHECK_1'); + const event = { target: input, type: 'change', preventDefault: vi.fn() }; + + accessibility.handleRadioCheckboxTableEvents(event); + + expect(event.preventDefault).toHaveBeenCalledOnce(); + await vi.advanceTimersByTimeAsync(100); + expect(document.activeElement).toBe(quest.root.querySelector('#srFocusHelper')); + expect(document.activeElement.closest('td')).toBe(input.closest('td')); + await vi.advanceTimersByTimeAsync(150); + expect(quest.root.querySelector('#ariaLiveSelectionAnnouncer').textContent).toBe('First Selected.'); + }); + + it('moves focus from the final table checkbox to the active question Next button', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
+
+
Row
+ `); + + accessibility.handleRadioCheckboxTableEvents({ + target: quest.root.querySelector('#FINAL'), + type: 'change', + preventDefault: vi.fn(), + }); + + const helper = quest.root.querySelector('#srFocusHelper'); + await vi.advanceTimersByTimeAsync(100); + expect(document.activeElement).toBe(helper); + expect(helper.closest('button')).toBe(quest.root.querySelector('button.next')); + }); + + it('logs invalid table inputs and missing focus targets without throwing', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` + + + + +
First
+ `); + const invalid = quest.root.querySelector('#BAD'); + accessibility.handleRadioCheckboxTableEvents({ target: invalid, type: 'change', preventDefault: vi.fn() }); + expect(quest.errors.some(([message]) => message.includes('Invalid event type'))).toBe(true); + + accessibility.handleRadioCheckboxTableEvents({ + target: quest.root.querySelector('#RADIO'), + type: 'change', + preventDefault: vi.fn(), + }); + await vi.advanceTimersByTimeAsync(100); + expect(quest.errors.some(([message]) => message.includes('Next question cell not found'))).toBe(true); + + quest.root.querySelector('#srFocusHelper').remove(); + accessibility.handleRadioCheckboxTableEvents({ + target: quest.root.querySelector('tr:last-child input'), + type: 'change', + preventDefault: vi.fn(), + }); + await vi.advanceTimersByTimeAsync(100); + expect(quest.errors.some(([message]) => message.includes('Focus helper not found'))).toBe(true); + }); + + it('logs missing active-question and Next-button targets for final selections', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` + +
Only
+ `); + const event = { target: quest.root.querySelector('#ONLY'), type: 'change', preventDefault: vi.fn() }; + + accessibility.handleRadioCheckboxTableEvents(event); + await vi.advanceTimersByTimeAsync(100); + expect(quest.errors.some(([message]) => message === 'Active question not found')).toBe(true); + + quest.root.insertAdjacentHTML('afterbegin', '
'); + accessibility.handleRadioCheckboxTableEvents(event); + await vi.advanceTimersByTimeAsync(100); + expect(quest.errors.some(([message]) => message === 'Next question button not found')).toBe(true); + }); + + it('walks past non-response siblings when ArrowUp leaves a nested text field', async () => { + const { quest, accessibility } = await loadAccessibilityFixture(` +
spacing
+
+ `); + const current = quest.root.querySelector('#CURRENT'); + current.focus(); + + accessibility.handleUpDownArrowKeys({ key: 'ArrowUp', target: current, preventDefault: vi.fn() }); + await vi.advanceTimersByTimeAsync(0); + expect(document.activeElement).toBe(quest.root.querySelector('#PREVIOUS')); + }); + + it('returns safely when announcer dependencies are absent and clears an existing region', async () => { + const { quest, accessibility } = await loadAccessibilityFixture('
'); + const response = quest.root.querySelector('.response'); + + expect(() => accessibility.updateAriaLiveSelectionAnnouncer(response)).not.toThrow(); + expect(() => accessibility.updateAriaLiveSelectionAnnouncerTable(response)).not.toThrow(); + expect(() => accessibility.clearSelectionAnnouncement()).not.toThrow(); + + quest.root.insertAdjacentHTML('beforeend', '
stale
'); + accessibility.clearSelectionAnnouncement(); + expect(quest.root.querySelector('#ariaLiveSelectionAnnouncer').textContent).toBe(''); + }); +}); diff --git a/tests/integration/eventHandlers.spec.js b/tests/integration/eventHandlers.spec.js new file mode 100644 index 0000000..fd402e3 --- /dev/null +++ b/tests/integration/eventHandlers.spec.js @@ -0,0 +1,186 @@ +import { afterEach, describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +const TEXT_SURVEY = ` +{"name":"EVENT_TEXT"} +[TEXT?] Enter a response. +|__|id=TEXT_VALUE minlen=2 maxlen=20| +[END,end] Done. +`; + +describe('delegated runtime event handling', () => { + afterEach(() => { + vi.clearAllTimers(); + vi.useRealTimers(); + }); + + it('captures input, focusout, Enter, and reset behavior at the Quest container boundary', async () => { + vi.useFakeTimers(); + const quest = await renderFreshQuest({ markdown: TEXT_SURVEY }); + const input = quest.root.querySelector('#TEXT_VALUE'); + const form = input.form; + vi.clearAllTimers(); + + const enter = new KeyboardEvent('keydown', { + bubbles: true, + cancelable: true, + code: 'Enter', + key: 'Enter', + keyCode: 13, + }); + expect(input.dispatchEvent(enter)).toBe(false); + expect(enter.defaultPrevented).toBe(true); + + input.value = 'debounced value'; + input.dispatchEvent(new InputEvent('input', { bubbles: true, data: 'e', inputType: 'insertText' })); + expect(vi.getTimerCount()).toBe(1); + await vi.advanceTimersByTimeAsync(250); + expect(quest.state.getActiveQuestionState()).toEqual({}); + + input.value = 'focusout value'; + input.dispatchEvent(new FocusEvent('focusout', { bubbles: true })); + expect(quest.state.getActiveQuestionState().TEXT).toBe('focusout value'); + expect(input.getAttribute('style')).toContain('size: 20'); + + form.querySelector('.reset').click(); + expect(input.value).toBe(''); + expect(quest.state.getActiveQuestionState().TEXT).toBeUndefined(); + }); + + it('debounces nested Other text input and keeps its owning checkbox in sync', async () => { + vi.useFakeTimers(); + const quest = await renderFreshQuest({ markdown: TEXT_SURVEY }); + const form = quest.root.querySelector('#TEXT'); + form.querySelector('fieldset').innerHTML = ` + Choose another response. +
+ +
+ `; + quest.state.setNumResponseInputs('TEXT', 2); + const checkbox = form.querySelector('#OTHER'); + const otherText = form.querySelector('#OTHER_TEXT'); + vi.clearAllTimers(); + + otherText.value = 'synthetic detail'; + otherText.dispatchEvent(new InputEvent('input', { bubbles: true, data: 'l', inputType: 'insertText' })); + await vi.advanceTimersByTimeAsync(250); + + expect(checkbox.checked).toBe(true); + expect(quest.state.getActiveQuestionState().TEXT).toEqual({ + OTHER_GROUP: ['99'], + OTHER_TEXT: 'synthetic detail', + }); + + otherText.value = ''; + otherText.dispatchEvent(new InputEvent('input', { bubbles: true, data: null, inputType: 'deleteContentBackward' })); + await vi.advanceTimersByTimeAsync(250); + expect(checkbox.checked).toBe(false); + }); + + it('formats SSN and telephone keystrokes through delegated keyup listeners', async () => { + const quest = await renderFreshQuest({ markdown: TEXT_SURVEY }); + const form = quest.root.querySelector('#TEXT'); + const ssn = document.createElement('input'); + ssn.type = 'text'; + ssn.className = 'SSN'; + ssn.value = '12345'; + const phone = document.createElement('input'); + phone.type = 'tel'; + phone.value = '555555'; + form.querySelector('fieldset').append(ssn, phone); + + ssn.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true, code: 'Digit5' })); + phone.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true, code: 'Digit5' })); + + expect(ssn.value).toBe('123-45-'); + expect(phone.value).toBe('555-555-'); + }); + + it('updates the live selection announcement without requiring listeners on individual controls', async () => { + vi.useFakeTimers(); + const quest = await renderFreshQuest(); + const radio = quest.root.querySelector('#Q1_2'); + + radio.click(); + radio.dispatchEvent(new Event('change', { bubbles: true })); + await vi.advanceTimersByTimeAsync(100); + expect(quest.root.querySelector('#ariaLiveSelectionAnnouncer').textContent).toContain('Second answer Selected.'); + + radio.checked = false; + radio.dispatchEvent(new Event('change', { bubbles: true })); + await vi.advanceTimersByTimeAsync(100); + expect(quest.root.querySelector('#ariaLiveSelectionAnnouncer').textContent).toContain('Second answer Unselected.'); + }); + + it('builds a legend, a single hidden focus stop, and accessible break semantics', async () => { + const quest = await renderFreshQuest(); + const fieldset = quest.root.querySelector('#Q1 fieldset'); + + expect(fieldset.querySelector('legend.question-text')?.textContent).toContain('Choose one answer'); + expect(fieldset.querySelectorAll('.screen-reader-focus')).toHaveLength(1); + expect(fieldset.querySelector('.screen-reader-focus').tabIndex).toBe(0); + expect([...fieldset.querySelectorAll('br')].every((br) => br.getAttribute('aria-hidden') === 'true')).toBe(true); + expect(quest.root.querySelectorAll('#srAnnouncerContainer [aria-live="polite"]')).toHaveLength(2); + }); + + it('moves focus to the constructed screen-reader stop after a question transition', async () => { + vi.useFakeTimers(); + const quest = await renderFreshQuest(); + vi.clearAllTimers(); + + quest.root.querySelector('#Q1_1').click(); + quest.root.querySelector('#Q1 .next').click(); + await vi.advanceTimersByTimeAsync(0); + + expect(quest.root.querySelector('form.active')?.id).toBe('Q2'); + await vi.advanceTimersByTimeAsync(500); + expect(document.activeElement).toBe(quest.root.querySelector('#Q2 .screen-reader-focus')); + }); + + it('keeps host controls outside the delegated event boundary unchanged', async () => { + const quest = await renderFreshQuest(); + const outside = document.querySelector('#afterQuest'); + const handler = vi.fn(); + outside.addEventListener('keydown', handler); + + outside.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, key: 'Enter', keyCode: 13 })); + + expect(handler).toHaveBeenCalledOnce(); + expect(quest.state.getActiveQuestionState()).toEqual({}); + expect(quest.calls.store).toEqual([]); + }); + + it('works with ordinary host capture and bubble observers around the embedded Quest root', async () => { + const quest = await renderFreshQuest(); + const radio = quest.root.querySelector('#Q1_2'); + const host = document.querySelector('#root'); + const captureObserver = vi.fn(); + const bubbleObserver = vi.fn(); + document.addEventListener('keydown', captureObserver, true); + host.addEventListener('keydown', bubbleObserver); + + try { + const space = new KeyboardEvent('keydown', { + bubbles: true, + cancelable: true, + key: ' ', + code: 'Space', + }); + radio.dispatchEvent(space); + expect(captureObserver).toHaveBeenCalledWith(space); + expect(bubbleObserver).toHaveBeenCalledWith(space); + expect(space.defaultPrevented).toBe(false); + + radio.click(); + radio.dispatchEvent(new Event('change', { bubbles: true })); + await vi.waitFor(() => expect(quest.state.getActiveQuestionState().Q1).toBe('2')); + } finally { + document.removeEventListener('keydown', captureObserver, true); + host.removeEventListener('keydown', bubbleObserver); + } + }); +}); diff --git a/tests/integration/gridDeepCoverage.spec.js b/tests/integration/gridDeepCoverage.spec.js new file mode 100644 index 0000000..db22cb0 --- /dev/null +++ b/tests/integration/gridDeepCoverage.spec.js @@ -0,0 +1,258 @@ +import { existsSync, readFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +// This is the nine-row sleep grid from the locked production module2.txt +// corpus (commit 7ae99a22af325cf0e14be047a7636462db9bfd50). Keeping the authored +// IDs and response values makes the state-shape contract reviewable. +const PRODUCTION_SLEEP_GRID_SURVEY = ` +{"name":"TEST_PRODUCTION_GRID"} +[GRID_LEAD] The next question uses a production response grid. +|grid?|id="D_981441822"|What is the chance that you would doze off or fall asleep (not just "feel tired") in each of these situations? If you are never or rarely in the situation, please make your best guess for what would happen.|[ +[D_403155173] Sitting and reading; +[D_576621769] Watching television; +[D_988508028] Sitting inactive in public place (such as a theater or a meeting); [D_186488870] Riding as a passenger in a car for an hour without stopping; +[D_922388461] Lying down to rest in the afternoon; +[D_760686611] Sitting and talking to someone; +[D_354550061] Sitting quietly after a lunch that did not include alcohol; +[D_179705366] In a car, while you are stopped for a few minutes in traffic; +[D_955609858] At the dinner table;]| +(514068832:No chance) +(774439579:Slight Chance) +(747099514:Moderate Chance) +(977681388: High Chance)| +[END,end] Done. +`; + +const CHECKBOX_GRID_SURVEY = ` +{"name":"TEST_GRID_CHECKBOX_STATE"} +[GRID_LEAD] The next question uses a checkbox response grid. +|grid!|id="GRID_CHECKBOX_STATE"|Which supports apply?|[ +[ROW_PHONE] First need; +[ROW_EMAIL] Second need;]| +[1:Phone][2:Email]| +[END,end] Done. +`; + +// The two row conditions mirror the condition-driven symptom rows in the +// locked COVID module's D_114280729 grid, reduced to isolate completeness. +const CONDITIONAL_ROW_GRID_SURVEY = ` +{"name":"TEST_CONDITIONAL_GRID"} +[GRID_LEAD] The next question uses condition-driven production-style rows. +|grid?|id="GRID_CONDITIONAL"|How long did you experience the following symptoms?|[ +[D_374567479,displayif=equals(SHOW_TASTE,1)] Loss of taste or smell; +[D_966214244,displayif=equals(SHOW_FATIGUE,1)] Feeling generally more tired than you used to feel;]| +(232063618:Less than 1 month) +(948148236:Between 1 and 3 months) +(692824372:More than 3 months)| +[END,end] Done. +`; + +function validationGridSurvey(prompt) { + return ` +{"name":"TEST_${prompt === '!' ? 'HARD' : 'SOFT'}_GRID"} +[GRID_LEAD] The next question uses a required response grid. +|grid${prompt}|id="GRID_VALIDATION"|Rate both items.|[ +[ROW_ONE] First item; +[ROW_TWO] Second item;]| +(1:Never) +(2:Often)| +[END,end] Done. +`; +} + +const productionAlcoholFrequencyRows = [ + 'D_294629316', 'D_164707243', 'D_771426895', 'D_818310825', + 'D_843593800', 'D_175385712', 'D_772143730', 'D_602102163', +]; +const productionAlcoholCheckboxRows = [ + 'D_912659087', 'D_643512687', 'D_688123102', 'D_356133766', + 'D_690918725', 'D_178609656', 'D_261957180', 'D_715827646', +]; +const productionAlcoholCheckboxValues = ['789689151', '663253668', '104676242', '137733407']; +const corpusLock = JSON.parse(readFileSync(join(import.meta.dirname, '../corpus/lock.json'), 'utf8')); +const module3Path = join(import.meta.dirname, '../..', corpusLock.cacheRoot, corpusLock.commit, 'prod/module3.txt'); +const lockedModule3Markdown = existsSync(module3Path) ? readFileSync(module3Path, 'utf8') : null; + +function treeAt(questionID) { + return JSON.stringify({ + rootNode: { value: null, children: [{ value: questionID, children: [] }] }, + currentNode: questionID, + }); +} + +describe('deep grid state coverage', () => { + it('restores every independently keyed row in the locked production sleep grid', async () => { + const restoredRows = { + D_403155173: '774439579', + D_576621769: '747099514', + D_988508028: '977681388', + D_186488870: '514068832', + D_922388461: '774439579', + D_760686611: '747099514', + D_354550061: '977681388', + D_179705366: '514068832', + D_955609858: '774439579', + }; + const quest = await renderFreshQuest({ + markdown: PRODUCTION_SLEEP_GRID_SURVEY, + persistedData: { + D_981441822: restoredRows, + treeJSON: treeAt('D_981441822'), + }, + }); + const grid = quest.root.querySelector('#D_981441822'); + + expect(grid.dataset.grid).toBe('true'); + expect(grid.querySelectorAll('tr[data-gridrow="true"]')).toHaveLength(9); + expect(grid.querySelectorAll('th[scope="col"]')).toHaveLength(4); + for (const [rowId, value] of Object.entries(restoredRows)) { + expect(grid.querySelector(`input[name="${rowId}"][value="${value}"]`).checked).toBe(true); + } + expect(quest.state.getActiveQuestionState()).toEqual({ D_981441822: restoredRows }); + expect(quest.state.getResponseToQuestionMapping()).toMatchObject({ + 'D_403155173.D_981441822': 'D_981441822.D_403155173', + 'D_955609858.D_981441822': 'D_981441822.D_955609858', + }); + expect(quest.errors).toEqual([]); + }); + + it('tracks checkbox rows independently through delegated select, deselect, and reset flows', async () => { + const quest = await renderFreshQuest({ + markdown: CHECKBOX_GRID_SURVEY, + persistedData: { treeJSON: treeAt('GRID_CHECKBOX_STATE') }, + }); + const grid = quest.root.querySelector('#GRID_CHECKBOX_STATE'); + const phone = grid.querySelector('#ROW_PHONE_0'); + const email = grid.querySelector('#ROW_EMAIL_1'); + + phone.click(); + email.click(); + expect(quest.state.getActiveQuestionState()).toEqual({ + GRID_CHECKBOX_STATE: { + ROW_PHONE: ['1'], + ROW_EMAIL: ['2'], + }, + }); + + phone.click(); + expect(phone.checked).toBe(false); + expect(email.checked).toBe(true); + expect(quest.state.getCache()['ROW_PHONE.GRID_CHECKBOX_STATE']).toBeUndefined(); + expect(quest.state.getResponseToQuestionMapping()['ROW_PHONE.GRID_CHECKBOX_STATE']).toBeUndefined(); + + grid.querySelector('button.reset').click(); + expect(grid.querySelectorAll('input[type="checkbox"]:checked')).toHaveLength(0); + expect(quest.state.getActiveQuestionState().GRID_CHECKBOX_STATE).toBeUndefined(); + expect(quest.errors).toEqual([]); + }); + + it('excludes hidden production-style conditional rows from required grid completeness', async () => { + const quest = await renderFreshQuest({ + markdown: CONDITIONAL_ROW_GRID_SURVEY, + persistedData: { + SHOW_TASTE: '1', + SHOW_FATIGUE: '0', + treeJSON: treeAt('GRID_CONDITIONAL'), + }, + }); + const grid = quest.root.querySelector('#GRID_CONDITIONAL'); + const visibleRow = grid.querySelector('[data-question-id="D_374567479"]'); + const hiddenRow = grid.querySelector('[data-question-id="D_966214244"]'); + + expect(visibleRow.style.display).not.toBe('none'); + expect(hiddenRow.style.display).toBe('none'); + expect(hiddenRow.dataset.hidden).toBe('true'); + visibleRow.querySelector('input[value="232063618"]').click(); + grid.querySelector('button.next').click(); + + await vi.waitFor(() => expect(quest.root.querySelector('form.question.active')?.id).toBe('END')); + expect(quest.root.querySelector('#softModal').classList.contains('show')).toBe(false); + expect(quest.errors).toEqual([]); + }); + + it.each([ + ['?', 'softModal'], + ['!', 'hardModal'], + ])('shows the %s grid validation state before an unanswered grid can advance', async (prompt, modalId) => { + const quest = await renderFreshQuest({ + markdown: validationGridSurvey(prompt), + persistedData: { treeJSON: treeAt('GRID_VALIDATION') }, + }); + const grid = quest.root.querySelector('#GRID_VALIDATION'); + + grid.querySelector('button.next').click(); + await vi.waitFor(() => expect(quest.root.querySelector(`#${modalId}`).classList.contains('show')).toBe(true)); + expect(quest.root.querySelector(`#${modalId} [role="alert"]`)).not.toBeNull(); + expect(quest.root.querySelector('form.question.active')?.id).toBe('GRID_VALIDATION'); + expect(quest.errors).toEqual([]); + }); + + it.skipIf(!lockedModule3Markdown)('stores and restores independently selected arrays in the locked production Module 3 checkbox grid', async () => { + const markdown = lockedModule3Markdown; + const seededState = { + D_141874857: '16', + D_480426504: '24', + D_633553324: { + D_294629316: '950039557', + D_164707243: '402048066', + }, + treeJSON: treeAt('D_470862706'), + }; + const quest = await renderFreshQuest({ markdown, persistedData: seededState }); + const grid = quest.root.querySelector('#D_470862706'); + const visibleRows = Array.from(grid.querySelectorAll('tr[data-gridrow="true"]')) + .filter((row) => row.style.display !== 'none'); + + expect(visibleRows.map((row) => row.dataset.questionId)).toEqual(['D_912659087', 'D_643512687']); + expect(grid.querySelectorAll('tr[data-gridrow="true"][data-hidden="true"]')).toHaveLength(6); + expect(grid.querySelectorAll('[data-gridreplace]')).not.toHaveLength(0); + expect(grid.querySelectorAll('input[type="checkbox"]')).toHaveLength(32); + + grid.querySelector('input[name="D_912659087"][value="789689151"]').click(); + grid.querySelector('input[name="D_912659087"][value="104676242"]').click(); + grid.querySelector('input[name="D_643512687"][value="663253668"]').click(); + const expectedRows = { + D_912659087: ['789689151', '104676242'], + D_643512687: ['663253668'], + }; + expect(quest.state.getActiveQuestionState()).toEqual({ D_470862706: expectedRows }); + + grid.querySelector('button.next').click(); + await vi.waitFor(() => expect(quest.root.querySelector('form.question.active')?.id).toBe('INTROSE')); + const storedState = quest.state.getSurveyState(); + expect(storedState).toMatchObject({ D_470862706: expectedRows }); + expect(quest.calls.store.at(-1)['D_965707586.D_470862706']).toEqual(expectedRows); + + const restored = await renderFreshQuest({ + markdown, + persistedData: { ...storedState, treeJSON: treeAt('D_470862706') }, + }); + const restoredGrid = restored.root.querySelector('#D_470862706'); + for (const [rowId, values] of Object.entries(expectedRows)) { + for (const value of values) { + expect(restoredGrid.querySelector(`input[name="${rowId}"][value="${value}"]`).checked).toBe(true); + } + } + expect(restoredGrid.querySelectorAll('tr[data-gridrow="true"][data-hidden="true"]')).toHaveLength(6); + expect(restored.errors).toEqual([]); + }); + + it('keeps Module 3 English and Spanish production checkbox-grid IDs and axes in parity', () => { + const catalog = JSON.parse(readFileSync(join(import.meta.dirname, '../corpus/structuralCatalog.json'), 'utf8')); + const variants = catalog.surveys + .filter(({ module, locale }) => module === 'module3' && ['en', 'es'].includes(locale)) + .map(({ locale, grids }) => ({ locale, grid: grids.find(({ questionId }) => questionId === 'D_470862706') })); + + expect(variants).toHaveLength(2); + for (const { grid } of variants) { + expect(grid).toMatchObject({ + rowCount: 8, + rowQuestionIds: productionAlcoholCheckboxRows, + responseTypes: ['checkbox'], + responseValues: productionAlcoholCheckboxValues, + }); + } + }); +}); diff --git a/tests/integration/hostFailures.spec.js b/tests/integration/hostFailures.spec.js new file mode 100644 index 0000000..dbe98f7 --- /dev/null +++ b/tests/integration/hostFailures.spec.js @@ -0,0 +1,58 @@ +import { describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +async function answerAndAdvance(quest) { + quest.root.querySelector('#Q1_1').click(); + quest.root.querySelector('#Q1 .next').click(); + await vi.waitFor(() => expect(quest.store).toHaveBeenCalled()); +} + +describe('host boundary success, delay, and failure behavior', () => { + it('advances immediately while a delayed successful host write settles', async () => { + const quest = await renderFreshQuest({ storeDelay: 150 }); + + vi.useFakeTimers(); + try { + quest.root.querySelector('#Q1_1').click(); + quest.root.querySelector('#Q1 .next').click(); + + expect(quest.root.querySelector('form.active')?.id).toBe('Q2'); + expect(quest.calls.store).toHaveLength(1); + const pendingWrite = quest.store.mock.results[0].value; + let settled = false; + pendingWrite.then(() => { + settled = true; + }); + await Promise.resolve(); + expect(settled).toBe(false); + + await vi.advanceTimersByTimeAsync(150); + await expect(pendingWrite).resolves.toEqual({ code: 200 }); + expect(settled).toBe(true); + expect(quest.errors).toEqual([]); + } finally { + vi.useRealTimers(); + } + }); + + it.each(['non200', 'reject'])('rolls back navigation and shows a recoverable modal after a %s store result', async (storeMode) => { + const quest = await renderFreshQuest({ storeMode }); + + await answerAndAdvance(quest); + await vi.waitFor(() => expect(quest.root.querySelector('form.active')?.id).toBe('Q1')); + + expect(quest.root.querySelector('#storeErrorModal').classList).toContain('show'); + expect(quest.errors.flat().join(' ')).toContain('Error syncing state to store'); + }); + + it('logs a rejected retrieve operation and still starts a clean survey', async () => { + const retrieve = vi.fn(async () => { + throw new Error('Configured retrieve rejection'); + }); + const quest = await renderFreshQuest({ params: { retrieve } }); + + expect(quest.rendered).toBe(true); + expect(quest.root.querySelector('form.active')?.id).toBe('Q1'); + expect(quest.errors.flat().join(' ')).toContain('Error fetching retrieve function and css'); + }); +}); diff --git a/tests/integration/mainRender.spec.js b/tests/integration/mainRender.spec.js new file mode 100644 index 0000000..ab09847 --- /dev/null +++ b/tests/integration/mainRender.spec.js @@ -0,0 +1,186 @@ +import { describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest, SIMPLE_SURVEY } from '../helpers/questRuntime.js'; + +describe('transform.render', () => { + const resumedAtQ1 = JSON.stringify({ + rootNode: { value: null, children: [{ value: 'Q1', children: [] }] }, + currentNode: 'Q1', + }); + + it('renders an embedded survey through the public API with host-owned callbacks', async () => { + const quest = await renderFreshQuest(); + + expect(quest.rendered).toBe(true); + expect(quest.moduleParams.questName).toBe('TEST_MODULE'); + expect(quest.root.querySelector('#softModal')).not.toBeNull(); + expect(quest.root.querySelector('#progressBar')).not.toBeNull(); + expect(quest.root.querySelectorAll('form.question')).toHaveLength(1); + expect(quest.root.querySelector('form.active')?.id).toBe('Q1'); + expect(quest.root.querySelectorAll('input[type="radio"]')).toHaveLength(2); + expect(quest.errors).toEqual([]); + }); + + it('renders all questions in renderer full-list mode', async () => { + const quest = await renderFreshQuest({ + params: { isRenderer: true, activate: false, showProgressBarInQuest: false }, + }); + + expect(quest.rendered).toBe(true); + expect(quest.moduleParams.renderFullQuestionList).toBe(true); + expect(quest.root.querySelectorAll('form.question').length).toBeGreaterThanOrEqual(3); + expect([...quest.root.querySelectorAll('form.question')].map(({ id }) => id)).toEqual( + expect.arrayContaining(['Q1', 'Q2', 'END']), + ); + expect(quest.root.querySelector('#progressBar')).toBeNull(); + }); + + it('uses prefetched survey data without invoking retrieve', async () => { + const quest = await renderFreshQuest({ + persistedData: { Q1: '2', treeJSON: resumedAtQ1 }, + retrieveResult: { data: { TEST_MODULE: { Q1: '1' } } }, + }); + + expect(quest.retrieve).not.toHaveBeenCalled(); + expect(quest.state.getSurveyState().Q1).toBe('2'); + expect(quest.root.querySelector('#Q1_2').checked).toBe(true); + }); + + it('uses the exact version-pinned Quest stylesheets for a Connect-hosted prefetched render', async () => { + const requestedUrls = []; + const fetchStub = vi.fn(async (request) => { + requestedUrls.push(String(request)); + return { text: async () => `/* ${String(request)} */` }; + }); + vi.stubGlobal('fetch', fetchStub); + + try { + const quest = await renderFreshQuest({ + persistedData: { Q1: '2', treeJSON: resumedAtQ1 }, + params: { + url: 'https://questionnaire.test/prod/moduleExample.txt', + questVersion: '2.7.4', + }, + }); + + expect(quest.rendered).toBe(true); + expect(quest.retrieve).not.toHaveBeenCalled(); + expect(requestedUrls).toEqual([ + 'https://cdn.jsdelivr.net/gh/episphere/quest@v2.7.4/ActiveLogic.css', + 'https://cdn.jsdelivr.net/gh/episphere/quest@v2.7.4/Style1.css', + ]); + expect(document.head.querySelectorAll('link[rel="stylesheet"][href="blob:quest-test"]')).toHaveLength(2); + expect(quest.errors).toEqual([]); + } finally { + document.head.querySelectorAll('link[href="blob:quest-test"]').forEach((link) => link.remove()); + vi.unstubAllGlobals(); + } + }); + + it('unwraps a single retrieve payload and restores its active response', async () => { + const quest = await renderFreshQuest({ + retrieveResult: { data: { TEST_MODULE: { Q1: '1', treeJSON: resumedAtQ1 } } }, + }); + + expect(quest.retrieve).toHaveBeenCalledOnce(); + expect(quest.state.getSurveyState().Q1).toBe('1'); + expect(quest.root.querySelector('#Q1_1').checked).toBe(true); + }); + + it('delegates radio changes, persists a namespaced payload, and advances', async () => { + const quest = await renderFreshQuest(); + const radio = quest.root.querySelector('#Q1_2'); + radio.click(); + radio.dispatchEvent(new Event('change', { bubbles: true })); + + quest.root.querySelector('#Q1 .next').click(); + await vi.waitFor(() => expect(quest.root.querySelector('form.active')?.id).toBe('Q2')); + await vi.waitFor(() => expect(quest.store).toHaveBeenCalled()); + + expect(quest.calls.store[0]['TEST_MODULE.Q1']).toBe('2'); + expect(quest.calls.store[0]['TEST_MODULE.treeJSON']).toBeTypeOf('string'); + }); + + it('returns false and reports malformed survey input without throwing to the host', async () => { + const quest = await renderFreshQuest({ markdown: 'not a questionnaire' }); + + expect(quest.rendered).toBe(false); + expect(quest.errors.length).toBeGreaterThan(0); + }); + + it('keeps previous-result lookups available to conditions without merging them into survey state', async () => { + const markdown = ` + {"name":"PREVIOUS_RESULTS"} + [Q1,displayif=equals(EXTERNAL_FLAG,1)] Visible when prior data matches. + [END] Done. + `; + const quest = await renderFreshQuest({ markdown, previousResults: { EXTERNAL_FLAG: '1' } }); + + expect(quest.root.querySelector('form.active')?.id).toBe('Q1'); + expect(quest.state.getSurveyState()).not.toHaveProperty('EXTERNAL_FLAG'); + }); + + it('reinitializes survey state when the public render boundary is called sequentially', async () => { + const quest = await renderFreshQuest(); + quest.root.querySelector('#Q1_1').click(); + expect(quest.state.getActiveQuestionState()).toEqual({ Q1: '1' }); + + document.body.innerHTML = '
'; + const rendered = await quest.transform.render({ + activate: true, + text: SIMPLE_SURVEY.replace('TEST_MODULE', 'SECOND_MODULE'), + store: vi.fn(async () => ({ code: 200 })), + errorLogger: () => {}, + }, 'secondRoot'); + + expect(rendered).toBe(true); + expect(quest.moduleParams.questName).toBe('SECOND_MODULE'); + expect(document.querySelector('#secondRoot form.active')?.id).toBe('Q1'); + expect(quest.state.getSurveyState()).toEqual({}); + expect(quest.state.getActiveQuestionState()).toEqual({}); + }); + + it('does not let a pending delegated input debounce mutate a sequential render', async () => { + const firstMarkdown = ` + {"name":"FIRST_DEBOUNCE"} + [OLD?] Choose a response. + [99] Other [text box:OLD_OTHER_TEXT] + [END,end] Done. + `; + const quest = await renderFreshQuest({ markdown: firstMarkdown }); + const oldText = quest.root.querySelector('#OLD_OTHER_TEXT'); + const secondStore = vi.fn(async () => ({ code: 200 })); + const secondErrors = vi.fn(); + + vi.useFakeTimers(); + try { + oldText.value = 'stale response'; + oldText.dispatchEvent(new InputEvent('input', { + bubbles: true, + data: 'e', + inputType: 'insertText', + })); + + document.body.innerHTML = '
'; + const rendered = await quest.transform.render({ + activate: true, + text: SIMPLE_SURVEY.replace('TEST_MODULE', 'SECOND_DEBOUNCE'), + store: secondStore, + errorLogger: secondErrors, + }, 'secondRoot'); + + expect(rendered).toBe(true); + expect(quest.state.getSurveyState()).toEqual({}); + expect(quest.state.getActiveQuestionState()).toEqual({}); + + await vi.advanceTimersByTimeAsync(251); + + expect(quest.state.getSurveyState()).toEqual({}); + expect(quest.state.getActiveQuestionState()).toEqual({}); + expect(secondStore).not.toHaveBeenCalled(); + expect(secondErrors).not.toHaveBeenCalled(); + } finally { + vi.useRealTimers(); + } + }); + +}); diff --git a/tests/integration/offlineBoundary.spec.js b/tests/integration/offlineBoundary.spec.js new file mode 100644 index 0000000..8e0d13e --- /dev/null +++ b/tests/integration/offlineBoundary.spec.js @@ -0,0 +1,19 @@ +import { describe, expect, it, vi } from 'vitest'; + +describe('jsdom offline network boundary', () => { + it('installs deny-by-default fetch and XMLHttpRequest implementations', () => { + expect(globalThis.fetch.questDenyByDefault).toBe(true); + expect(globalThis.XMLHttpRequest.questDenyByDefault).toBe(true); + }); + + it('allows a test to replace fetch only with an explicit host-boundary stub', async () => { + const hostBoundary = vi.fn(async () => ({ ok: true, status: 200 })); + vi.stubGlobal('fetch', hostBoundary); + + await expect(fetch('https://synthetic-host.test/fixture')).resolves.toMatchObject({ + ok: true, + status: 200, + }); + expect(hostBoundary).toHaveBeenCalledWith('https://synthetic-host.test/fixture'); + }); +}); diff --git a/tests/integration/productionLoopCoverage.spec.js b/tests/integration/productionLoopCoverage.spec.js new file mode 100644 index 0000000..df62e87 --- /dev/null +++ b/tests/integration/productionLoopCoverage.spec.js @@ -0,0 +1,218 @@ +import { readFileSync } from 'node:fs'; +import path from 'node:path'; + +import { describe, expect, it, vi } from 'vitest'; + +const repositoryRoot = path.resolve(import.meta.dirname, '../..'); +const corpusRoot = path.join( + repositoryRoot, + '.cache/questionnaire/7ae99a22af325cf0e14be047a7636462db9bfd50/prod', +); + +const PRECALCULATED = { + current_date: new Date('2026-03-15T12:00:00Z'), + current_day: 15, + current_month: 3, + current_month_str: 'March', + current_year: 2026, + quest_format_date: '2026-3-15', +}; + +const LOOP_CASES = [ + { + label: 'Module 1 siblings', + file: 'module1.txt', + countId: 'D_694265648', + firstId: 'D_406098499', + earlyExitId: 'D_607773106', + loopIndex: 1, + afterLoopId: 'CHILD', + minimum: 0, + maximum: 25, + }, + { + label: 'Module 1 children', + file: 'module1.txt', + countId: 'D_446999144', + firstId: 'D_714001034', + earlyExitId: 'D_718867914', + loopIndex: 2, + afterLoopId: 'SECTION5', + minimum: 0, + maximum: 25, + }, + { + label: 'COVID illnesses', + file: 'moduleCOVID19.txt', + countId: 'D_860011428', + firstId: 'D_980800222_V2', + earlyExitId: 'SRVCOV_COVSUMMARY_V1R0', + loopIndex: 1, + afterLoopId: 'COV19_SKIP', + minimum: 1, + maximum: 25, + }, + { + label: 'COVID vaccinations', + file: 'moduleCOVID19.txt', + countId: 'D_877074400_V2', + firstId: 'D_715581797_V2', + earlyExitId: 'SRVCOV_COV29_V1R0', + loopIndex: 2, + afterLoopId: 'END', + minimum: 1, + maximum: 10, + }, +]; + +function lockedMarkdown(file) { + return readFileSync(path.join(corpusRoot, file), 'utf8'); +} + +function localizedFile(loop, language) { + if (language === 'en') return loop.file; + return loop.file === 'module1.txt' ? 'module1Spanish.txt' : 'moduleCOVID19Spanish.txt'; +} + +function exactQuestionIndex(processor, id) { + return processor.questions.findIndex(({ questionIDExactSearch }) => questionIDExactSearch === id); +} + +async function createProcessor(markdown, initialState = {}, language = 'en') { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + const i18n = (await import(`../../i18n/${language}.js`)).default; + questionnaire.moduleParams.i18n = i18n; + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = {}; + questionnaire.moduleParams.asyncQuestionsMap = {}; + questionnaire.moduleParams.renderFullQuestionList = true; + questionnaire.moduleParams.isRenderer = true; + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + const state = stateModule.getStateManager(); + state.loadInitialSurveyState(initialState); + + const { initializeCustomMathJSFunctions } = await import('../../customMathJSImplementation.js'); + initializeCustomMathJSFunctions(); + const { QuestionProcessor } = await import('../../questionProcessor.js'); + const processor = new QuestionProcessor(markdown, PRECALCULATED, i18n); + state.setQuestionProcessor(processor); + return { processor, state }; +} + +function prepareLoop(processor, firstId) { + const firstIndex = exactQuestionIndex(processor, `${firstId}_1_1`); + expect(firstIndex, `${firstId} should be expanded`).toBeGreaterThanOrEqual(0); + processor.processQuestion(firstIndex); + processor.setCurrentQuestionIndex('update', firstIndex); + return firstIndex; +} + +function continuationId(loopIndex, iteration) { + return `_CONTINUE${loopIndex}_${iteration}_${iteration}`; +} + +describe('locked production loop expansion and navigation', () => { + it.each(['en', 'es'])('keeps Module 1 and COVID loop definitions aligned in %s', async (language) => { + const module1File = language === 'en' ? 'module1.txt' : 'module1Spanish.txt'; + const covidFile = language === 'en' ? 'moduleCOVID19.txt' : 'moduleCOVID19Spanish.txt'; + const module1 = await createProcessor(lockedMarkdown(module1File), {}, language); + const covid = await createProcessor(lockedMarkdown(covidFile), {}, language); + + for (const loop of LOOP_CASES) { + const processor = loop.file === 'module1.txt' ? module1.processor : covid.processor; + const first = processor.processQuestion(exactQuestionIndex(processor, `${loop.firstId}_1_1`)); + const last = processor.processQuestion(exactQuestionIndex(processor, `${loop.firstId}_25_25`)); + + expect(first.id).toBe(`${loop.firstId}_1_1`); + expect(last.id).toBe(`${loop.firstId}_25_25`); + expect(first.getAttribute('firstquestion')).toBe('1'); + expect(first.getAttribute('loopmax')).toBe(loop.countId); + expect(first.getAttribute('loopindx')).toBe(String(loop.loopIndex)); + const countControl = processor.processQuestion(exactQuestionIndex(processor, loop.countId)) + .querySelector('input[type="number"]'); + expect(countControl).not.toBeNull(); + expect(Number(countControl.min)).toBe(loop.minimum); + expect(countControl.max).toBe(loop.maximum === 25 && loop.countId === 'D_860011428' ? '' : String(loop.maximum)); + } + }); + + it.each(LOOP_CASES)('$label respects valid participant bounds in English and Spanish', async (loop) => { + const validCounts = [...new Set([loop.minimum, 1, 2, loop.maximum])].sort((left, right) => left - right); + for (const language of ['en', 'es']) { + for (const count of validCounts) { + const { processor } = await createProcessor( + lockedMarkdown(localizedFile(loop, language)), + { [loop.countId]: String(count) }, + language, + ); + prepareLoop(processor, loop.firstId); + + const firstContinuation = processor.findQuestion(continuationId(loop.loopIndex, 1)); + expect(firstContinuation.question, `${loop.label}, ${language}, count ${count}`).not.toBeNull(); + + if (count < 2) { + expect(firstContinuation.question.id).toBe(loop.afterLoopId); + } else { + expect(firstContinuation.question.id).toBe(`${loop.firstId}_2_2`); + } + + const lastIndex = exactQuestionIndex(processor, `${loop.firstId}_${loop.maximum}_${loop.maximum}`); + processor.setCurrentQuestionIndex('update', lastIndex); + expect(processor.findQuestion(continuationId(loop.loopIndex, loop.maximum)).question.id).toBe(loop.afterLoopId); + } + } + }); + + it('keeps the COVID vaccination copies 11 through 25 outside valid participant navigation', async () => { + const vaccineLoop = LOOP_CASES.find(({ label }) => label === 'COVID vaccinations'); + const { processor } = await createProcessor(lockedMarkdown(vaccineLoop.file), { + [vaccineLoop.countId]: String(vaccineLoop.maximum), + }); + prepareLoop(processor, vaccineLoop.firstId); + + const finalValidIndex = exactQuestionIndex( + processor, + `${vaccineLoop.firstId}_${vaccineLoop.maximum}_${vaccineLoop.maximum}`, + ); + processor.setCurrentQuestionIndex('update', finalValidIndex); + expect(processor.findQuestion(continuationId(vaccineLoop.loopIndex, vaccineLoop.maximum)).question.id) + .toBe(vaccineLoop.afterLoopId); + + expect(exactQuestionIndex(processor, `${vaccineLoop.firstId}_11_11`)).toBeGreaterThan(finalValidIndex); + expect(exactQuestionIndex(processor, `${vaccineLoop.firstId}_25_25`)).toBeGreaterThan(finalValidIndex); + }); + + it.each(LOOP_CASES)('$label routes an authored early exit to the next iteration', async (loop) => { + const { processor } = await createProcessor(lockedMarkdown(loop.file), { [loop.countId]: '2' }); + prepareLoop(processor, loop.firstId); + const earlyExitIndex = exactQuestionIndex(processor, `${loop.earlyExitId}_1_1`); + expect(earlyExitIndex, `${loop.earlyExitId} should be expanded`).toBeGreaterThanOrEqual(0); + processor.setCurrentQuestionIndex('update', earlyExitIndex); + + expect(processor.findQuestion(continuationId(loop.loopIndex, 1)).question.id) + .toBe(`${loop.firstId}_2_2`); + }); + + it.each(LOOP_CASES)('$label reconstructs loop state from a persisted second iteration without losing suffixed response keys', async (loop) => { + const initialState = { + [loop.countId]: '2', + [`${loop.firstId}_1_1`]: 'first response', + [`${loop.firstId}_2_2`]: 'second response', + }; + const { processor, state } = await createProcessor(lockedMarkdown(loop.file), initialState); + const secondIndex = exactQuestionIndex(processor, `${loop.firstId}_2_2`); + processor.setCurrentQuestionIndex('update', secondIndex); + + expect(processor.loopDataArr).toEqual([]); + expect(processor.getLoopData()).toMatchObject({ + loopMaxQuestionID: loop.countId, + loopMaxResponse: 2, + loopFirstQuestionID: loop.firstId, + }); + expect(state.getSurveyState()).toMatchObject(initialState); + expect(state.getSurveyState()).not.toHaveProperty(loop.firstId); + }); +}); diff --git a/tests/integration/questionProcessor.spec.js b/tests/integration/questionProcessor.spec.js new file mode 100644 index 0000000..42708d9 --- /dev/null +++ b/tests/integration/questionProcessor.spec.js @@ -0,0 +1,677 @@ +import { readFileSync } from 'node:fs'; +import { resolve } from 'node:path'; +import { describe, expect, it, vi } from 'vitest'; + +const ALL_CONSTRUCTS = readFileSync( + resolve('tests/fixtures/canonical/allConstructs.txt'), + 'utf8', +); + +const PRECALCULATED = { + current_date: new Date('2026-03-15T12:00:00Z'), + current_day: 15, + current_month: 3, + current_month_str: 2, + current_year: 2026, + quest_format_date: '2026-3-15', + firstName: 'Synthetic', +}; + +async function createProcessor(markdown, initialState = {}, options = {}) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + const language = options.language ?? 'en'; + const i18n = (await import(`../../i18n/${language}.js`)).default; + questionnaire.moduleParams.i18n = i18n; + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = options.previousResults ?? {}; + questionnaire.moduleParams.asyncQuestionsMap = options.asyncQuestionsMap ?? {}; + questionnaire.moduleParams.renderFullQuestionList = options.renderFullQuestionList ?? true; + questionnaire.moduleParams.isRenderer = options.isRenderer ?? true; + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + const state = stateModule.getStateManager(); + state.loadInitialSurveyState(initialState); + + const { initializeCustomMathJSFunctions } = await import('../../customMathJSImplementation.js'); + initializeCustomMathJSFunctions(); + const { QuestionProcessor } = await import('../../questionProcessor.js'); + const processor = new QuestionProcessor(markdown, PRECALCULATED, i18n); + state.setQuestionProcessor(processor); + return { processor, state, moduleParams: questionnaire.moduleParams }; +} + +function processById(processor, id) { + return processor.findQuestion(id).question; +} + +describe('QuestionProcessor constructs', () => { + it('removes comments, captures the module name, and preserves hard/soft/plain semantics', async () => { + const { processor, moduleParams } = await createProcessor(` + // line comment + {"name":"PROCESSOR_TEST"} + /* block comment */ + [SOFT?] Optional response. + (1) Yes + [HARD!] Required response. + [1] Choice + [PLAIN] Information only. + [END,end] Done. + `); + + expect(moduleParams.questName).toBe('PROCESSOR_TEST'); + expect(processor.questions.map(({ questionID }) => questionID)).toEqual(['SOFT?', 'HARD!', 'PLAIN', 'END']); + expect(processById(processor, 'SOFT').getAttribute('softedit')).toBe('true'); + expect(processById(processor, 'HARD').getAttribute('hardedit')).toBe('true'); + expect(processById(processor, 'PLAIN').querySelectorAll('input')).toHaveLength(0); + }); + + it('renders every scalar input family with stable IDs, types, descriptions, and limits', async () => { + const { processor } = await createProcessor(` + {"name":"INPUT_TYPES"} + [TEXT?] Text |__|id=TEXT_VALUE minlen=2 maxlen=8| + [NUMBER?] Number |__|__|id=NUMBER_VALUE min=1 max=10| + [AREA?] Notes |___|NOTES| + [EMAIL?] Email |@|id=EMAIL_VALUE| + [PHONE?] Phone |tel|id=PHONE_VALUE| + [FULLSSN?] SSN |SSN|id=FULL_SSN| + [SMALLSSN?] Last four |SSNsm|id=SMALL_SSN| + [ZIP?] Zip |zip|id=ZIP_VALUE| + [STATE?] State |state|id=STATE_VALUE| + [DATE?] Date |date|id=DATE_VALUE min=2020-01-01 max=2030-12-31| + [MONTH?] Month |month|id=MONTH_VALUE min=2020-01 max=2030-12| + [TIME?] Time |time|id=TIME_VALUE| + [HIDDEN] Hidden |hidden|id=HIDDEN_VALUE| + [END,end] Done. + `); + + processor.processAllQuestions(); + const forms = [...processor.getAllProcessedQuestions().values()]; + const all = document.createElement('div'); + forms.forEach((form) => all.append(form)); + + expect(all.querySelector('#TEXT_VALUE')).toMatchObject({ type: 'text' }); + expect(all.querySelector('#TEXT_VALUE').dataset).toMatchObject({ minlen: '2', maxlen: '8' }); + expect(all.querySelector('#NUMBER_VALUE')).toMatchObject({ type: 'number', min: '1', max: '10' }); + expect(all.querySelector('#NUMBER_VALUE').dataset).toMatchObject({ min: '1', max: '10' }); + expect(all.querySelector('#NOTES').tagName).toBe('TEXTAREA'); + expect(all.querySelector('#EMAIL_VALUE').type).toBe('email'); + expect(all.querySelector('#PHONE_VALUE').type).toBe('tel'); + expect(all.querySelector('#FULL_SSN').classList).toContain('SSN'); + expect(all.querySelector('#SMALL_SSN').classList).toContain('SSNsm'); + expect(all.querySelector('#ZIP_VALUE').classList).toContain('zipcode'); + expect(all.querySelector('#STATE_VALUE').querySelectorAll('option').length).toBeGreaterThan(50); + expect(all.querySelector('#DATE_VALUE').getAttribute('aria-describedby')).toBe('DATE_VALUE-desc'); + expect(all.querySelector('#MONTH_VALUE').dataset.minDateUneval).toBe('2020-01'); + expect(all.querySelector('#TIME_VALUE').getAttribute('aria-label')).toBe('Enter Time'); + expect(all.querySelector('#HIDDEN_VALUE').dataset.hidden).toBe('true'); + }); + + it('renders radios, checkboxes, reset choices, named groups, labels, and yes/no macros', async () => { + const { processor } = await createProcessor(` + {"name":"CHOICES"} + [RADIO?] Pick one. + (1) One + (2:NAMED|CUSTOM_LABEL) Two + [CHECK?] Pick many. + [1] First + [99*] None + [YN?] Answer. #YN + [YNP?] Answer. #YNP + [END,end] Done. + `); + + const radio = processById(processor, 'RADIO'); + const check = processById(processor, 'CHECK'); + const yn = processById(processor, 'YN'); + const ynp = processById(processor, 'YNP'); + + expect(radio.querySelectorAll('input[type="radio"]')).toHaveLength(2); + expect(radio.querySelector('#NAMED_2').name).toBe('NAMED'); + expect(radio.querySelector('label[for="NAMED_2"]').id).toBe('CUSTOM_LABEL'); + expect(check.querySelectorAll('input[type="checkbox"]')).toHaveLength(2); + expect(check.querySelector('#CHECK_99').dataset.reset).toBe('true'); + expect(yn.querySelectorAll('[role="radiogroup"] input')).toHaveLength(2); + expect(ynp.querySelectorAll('[role="radiogroup"] input')).toHaveLength(3); + }); + + it('renders grids, inline conditions, piped values, expressions, popovers, images, and hidden skips', async () => { + const { processor } = await createProcessor(` + {"name":"COMPOSITES"} + [INTRO] Hello {$u:firstName}; saved {$SAVED:missing}; result {#1+1}. + |displayif=equals(SHOW,1)|Visible text| + |popup|More|Help|Synthetic help text| + |image|example.org/test.png|40,80| + < |if=equals(SHOW,1)| -> TARGET > + [GRID_LEAD] Rate each. + |grid?|id="GRID"|Frequency|[ROW_A] Alpha;[ROW_B] Beta;|(1: Never)(2: Often)| + [TARGET] Target. + [END,end] Done. + `); + + const intro = processById(processor, 'INTRO'); + processor.processAllQuestions(); + const grid = processById(processor, 'GRID'); + + expect(intro.querySelector('[name="firstName"]').textContent).toBe('Synthetic'); + expect(intro.querySelector('[forid="SAVED"]').getAttribute('optional')).toBe(encodeURIComponent('missing')); + expect(intro.querySelector('[data-encoded-expression]')).not.toBeNull(); + expect(intro.querySelector('.displayif').getAttribute('displayif')).toBe('equals(SHOW,1)'); + expect(intro.querySelector('[data-bs-toggle="popover"]').getAttribute('data-bs-content')).toBe('Synthetic help text'); + expect(intro.querySelector('img').src).toBe('https://example.org/test.png'); + expect(intro.querySelector('input[type="hidden"]').getAttribute('skipto')).toBe('TARGET'); + expect(grid.dataset.grid).toBe('true'); + expect(grid.querySelectorAll('tbody tr')).toHaveLength(2); + expect(grid.querySelectorAll('input[type="radio"]')).toHaveLength(4); + }); + + it('replaces fixed date tags deterministically', async () => { + const { processor } = await createProcessor(` + {"name":"DATES"} + [Q] #currentYear #currentMonth #today #today + 2 #today - 20. + [END,end] Done. + `); + const form = processById(processor, 'Q'); + + expect(form.textContent.replace(/\s+/g, ' ')).toContain('2026 3 2026-3-15 2026-3-17 2026-2-23'); + }); + + it('unrolls loop boundaries with deterministic IDs and loop metadata', async () => { + const { processor } = await createProcessor(` + {"name":"LOOPS"} + [COUNT?] Count |__|__|id=D_123456789 min=0 max=2| + + [ITEM?,displayif=greaterThanOrEqual(D_123456789,#loop)] Enter the {##} item. + |__|id=ITEM_VALUE| + + [END,end] Done. + `, { D_123456789: '2' }); + + const ids = processor.questions.map(({ questionIDExactSearch }) => questionIDExactSearch); + expect(ids).toEqual(['COUNT', 'ITEM_1_1', 'ITEM_2_2', 'END_OF_LOOP', 'END']); + const first = processById(processor, 'ITEM_1_1'); + const second = processById(processor, 'ITEM_2_2'); + expect(first.textContent).toContain('1st item'); + expect(second.textContent).toContain('2nd item'); + expect(first.getAttribute('firstquestion')).toBe('1'); + expect(second.getAttribute('firstquestion')).toBe('2'); + expect(first.getAttribute('loopmax')).toBe('D_123456789'); + }); + + it('renders the complete construct inventory through a reset full module graph', async () => { + vi.spyOn(console, 'warn').mockImplementation(() => {}); + const { processor, moduleParams } = await createProcessor(ALL_CONSTRUCTS, { + LIST_VALUE: ['one', 'two'], + SAVED: 'restored', + SHOW_BLOCK: '1', + SHOW_CHECKBOX: '1', + SHOW_GRID: '1', + SHOW_INLINE: '1', + SHOW_RADIO: '1', + SHOW_ROW: '1', + }); + processor.processAllQuestions(); + + const forms = [...processor.getAllProcessedQuestions().values()]; + const root = document.createElement('div'); + forms.forEach((form) => root.append(form)); + + expect(forms.map((form) => form.id)).toEqual([ + 'PLAIN', + 'RADIO', + 'CHECKBOX', + 'COMBINED', + 'COMBINED_TEXTAREA', + 'CONFIRM', + 'EMAIL', + 'PHONE', + 'FULL_SSN', + 'SHORT_SSN', + 'ZIP', + 'STATE', + 'DATE', + 'MONTH', + 'TIME', + 'NUMBER', + 'TEXT', + 'TEXTBOX', + 'TEXTAREA', + 'HIDDEN', + 'YES_NO', + 'YES_NO_PREFER', + 'DEFAULT_SKIP', + 'NO_RESPONSE_SKIP', + 'GRID_RADIO', + 'GRID_CHECKBOX', + 'D_900000002', + 'LOOP_ITEM_1_1', + 'LOOP_ITEM_2_2', + 'END_OF_LOOP', + 'END', + ]); + expect(root.querySelectorAll('#PLAIN .displayif')).toHaveLength(2); + expect(root.querySelectorAll('#PLAIN .displayList')).toHaveLength(2); + expect(root.querySelector('#PLAIN [data-bs-toggle="popover"]')?.dataset.bsContent).toBe('Synthetic help text'); + expect(root.querySelector('#PLAIN img')?.src).toBe('https://episphere.github.io/quest/images/FemaleBaldness1.png'); + expect(root.querySelectorAll('#RADIO input[type="radio"]')).toHaveLength(2); + expect(root.querySelectorAll('#CHECKBOX input[type="checkbox"]')).toHaveLength(3); + expect(root.querySelector('#CHECKBOX')?.dataset).toMatchObject({ minCount: '1', maxCount: '2' }); + expect(root.querySelector('#CHECKBOX input[data-reset="true"]')).not.toBeNull(); + expect(root.querySelector('#COMBINED_807835037')?.getAttribute('skipto')).toBe('EMAIL'); + expect(root.querySelector('#COMBINED_TEXT')?.type).toBe('text'); + expect(root.querySelector('#COMBINED_TEXTAREA_GROUP_1')?.getAttribute('skipto')).toBe('EMAIL'); + expect(root.querySelector('#COMBINED_TEXTAREA_VALUE')?.tagName).toBe('TEXTAREA'); + expect(root.querySelector('#CONFIRM_COPY')?.getAttribute('confirm')).toBeNull(); + expect(root.querySelector('#CONFIRM_COPY')?.dataset.confirm).toBe('CONFIRM_ORIGINAL'); + expect(root.querySelector('#CONFIRM_ORIGINAL')?.dataset.confirmationFor).toBe('CONFIRM_COPY'); + + expect(root.querySelector('#EMAIL_VALUE')?.type).toBe('email'); + expect(root.querySelector('#PHONE_VALUE')?.type).toBe('tel'); + expect(root.querySelector('#FULL_SSN_VALUE')?.classList).toContain('SSN'); + expect(root.querySelector('#SHORT_SSN_VALUE')?.classList).toContain('SSNsm'); + expect(root.querySelector('#ZIP_VALUE')?.classList).toContain('zipcode'); + expect(root.querySelector('#STATE_VALUE')?.tagName).toBe('SELECT'); + expect(root.querySelector('#DATE_VALUE')?.type).toBe('date'); + expect(root.querySelector('#MONTH_VALUE')?.type).toBe('month'); + expect(root.querySelector('#TIME_VALUE')?.type).toBe('time'); + expect(root.querySelector('#NUMBER_VALUE')?.type).toBe('number'); + expect(root.querySelector('#TEXT_VALUE')?.type).toBe('text'); + expect(root.querySelector('#TEXTBOX_VALUE')?.type).toBe('text'); + expect(root.querySelector('#TEXTAREA_VALUE')?.tagName).toBe('TEXTAREA'); + expect(root.querySelector('#HIDDEN_VALUE')?.dataset.hidden).toBe('true'); + expect(root.querySelectorAll('#YES_NO input[type="radio"]')).toHaveLength(2); + expect(root.querySelectorAll('#YES_NO_PREFER input[type="radio"]')).toHaveLength(3); + expect(root.querySelector('#DEFAULT_SKIP input[type="hidden"]')?.getAttribute('skipto')).toBe('GRID_RADIO'); + expect(root.querySelector('#NO_RESPONSE_SKIP input.noresponse')?.getAttribute('skipto')).toBe('GRID_RADIO'); + expect(root.querySelectorAll('#GRID_RADIO input[type="radio"]')).toHaveLength(4); + expect(root.querySelectorAll('#GRID_CHECKBOX input[type="checkbox"]')).toHaveLength(2); + expect(root.querySelectorAll('form.question[id^="LOOP_ITEM_"]')).toHaveLength(2); + expect(moduleParams.errorLogger).not.toHaveBeenCalled(); + }); + + it('caches processed questions and reports invalid indexes and IDs through the host logger', async () => { + const { processor, moduleParams } = await createProcessor(` + {"name":"CACHE"} + [Q1] First. + [Q2] Second. + [END,end] Done. + `); + + const first = processor.processQuestion(0); + expect(processor.processQuestion(0)).toBe(first); + expect(processor.processQuestion(-1)).toBeNull(); + expect(processor.findQuestion('MISSING')).toEqual({ question: null, index: -1 }); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('question not found')); + }); +}); + +describe('QuestionProcessor navigation and processing lifecycle', () => { + const NAVIGATION_MARKDOWN = ` + {"name":"NAVIGATION"} + [Q10] Prefix neighbor. + [Q1] First. + [Q2] Second. + [END,end] Done. + `; + + it('prefers exact IDs and transfers the active question during explicit forward and back navigation', async () => { + const { processor, moduleParams } = await createProcessor( + NAVIGATION_MARKDOWN, + {}, + { renderFullQuestionList: false }, + ); + + const initial = processor.loadInitialQuestionOnStartup('Q1'); + expect(initial.id).toBe('Q1'); + expect(initial.classList).toContain('active'); + expect(processor.findQuestion('Q1').index).toBe(1); + + const second = processor.loadNextQuestion('Q2'); + expect(second.id).toBe('Q2'); + expect(initial.classList).not.toContain('active'); + expect(second.classList).toContain('active'); + + const previous = processor.loadPreviousQuestion('Q1'); + expect(previous).toBe(initial); + expect(second.classList).not.toContain('active'); + expect(initial.classList).toContain('active'); + expect(moduleParams.errorLogger).not.toHaveBeenCalled(); + }); + + it('advances sequentially and returns null without moving past either navigation boundary', async () => { + const { processor, moduleParams } = await createProcessor(NAVIGATION_MARKDOWN); + + expect(processor.getNextSequentialQuestionID()).toBe('Q1'); + expect(processor.currentQuestionIndex).toBe(1); + + processor.setCurrentQuestionIndex('update', processor.questions.length - 1); + expect(processor.getNextSequentialQuestionID()).toBeNull(); + expect(processor.currentQuestionIndex).toBe(processor.questions.length - 1); + + processor.setCurrentQuestionIndex('update', 0); + expect(processor.loadPreviousQuestion('Q1')).toBeNull(); + + processor.setCurrentQuestionIndex('update', -1); + expect(processor.getCurrentQuestion()).toBeNull(); + expect(moduleParams.errorLogger).toHaveBeenCalledTimes(3); + }); + + it('reports empty and missing startup targets without activating a question', async () => { + const empty = await createProcessor('{"name":"EMPTY"}'); + expect(empty.processor.loadInitialQuestionOnStartup('Q1')).toBeNull(); + expect(empty.moduleParams.errorLogger).toHaveBeenCalledWith( + expect.stringContaining('no questions found'), + [], + ); + + const missing = await createProcessor(NAVIGATION_MARKDOWN); + expect(missing.processor.loadInitialQuestionOnStartup('MISSING')).toBeNull(); + expect(missing.moduleParams.errorLogger).toHaveBeenCalledWith( + expect.stringContaining('question not found'), + 'MISSING', + ); + }); + + it('logs invalid active-class and forward-navigation boundaries without unloading the active form', async () => { + const { processor, moduleParams } = await createProcessor(NAVIGATION_MARKDOWN); + const active = processor.loadInitialQuestionOnStartup('Q1'); + + expect(processor.manageActiveQuestionClass(null, active)).toBeNull(); + expect(active.classList).toContain('active'); + + processor.currentQuestionIndex = processor.questions.length; + expect(processor.loadNextQuestion('END')).toBeNull(); + expect(processor.currentQuestionIndex).toBe(processor.questions.length); + expect(moduleParams.errorLogger).toHaveBeenCalledTimes(2); + }); + + it('processes partial batches once, clamps ranges, and makes completion idempotent', async () => { + const { processor } = await createProcessor(NAVIGATION_MARKDOWN); + const processQuestion = vi.spyOn(processor, 'processQuestion'); + + processor.processAllQuestions(-10, 2); + expect([...processor.getAllProcessedQuestions().keys()]).toEqual([0, 1]); + expect(processor.isProcessingComplete).toBe(false); + + processQuestion.mockClear(); + processor.processAllQuestions(0, 3); + expect(processQuestion).toHaveBeenCalledTimes(1); + expect(processQuestion).toHaveBeenCalledWith(2); + + processor.processAllQuestions(0, 100); + expect(processor.getAllProcessedQuestions()).toHaveLength(4); + expect(processor.isProcessingComplete).toBe(true); + + processQuestion.mockClear(); + processor.processAllQuestions(); + expect(processQuestion).not.toHaveBeenCalled(); + }); +}); + +describe('QuestionProcessor loop runtime', () => { + const LOOP_MARKDOWN = ` + {"name":"LOOP_RUNTIME"} + [COUNT?] Count |__|__|id=D_100 min=0 max=2| + + [ITEM?,displayif=greaterThanOrEqual(D_100,#loop)] Item {##}. + |__|id=ITEM_VALUE| + + [AFTER] After the loop. + [END,end] Done. + `; + + it('continues to the next authored iteration, then exits when the response boundary changes', async () => { + const { processor, moduleParams } = await createProcessor(LOOP_MARKDOWN, { D_100: '2' }); + const firstLoopIndex = processor.questions.findIndex(({ questionIDExactSearch }) => questionIDExactSearch === 'ITEM_1_1'); + processor.processQuestion(firstLoopIndex); + processor.setCurrentQuestionIndex('update', firstLoopIndex); + + expect(processor.getLoopData()).toMatchObject({ + locationIndex: firstLoopIndex, + loopMaxQuestionID: 'D_100', + loopMaxResponse: 2, + loopFirstQuestionID: 'ITEM', + }); + expect(processor.findQuestion('_CONTINUE1_1_1')).toMatchObject({ + question: expect.objectContaining({ id: 'ITEM_2_2' }), + }); + + processor.checkLoopMaxData(); + processor.checkLoopMaxData('UNRELATED', '1'); + processor.checkLoopMaxData('D_100', 'not-a-number'); + expect(processor.getLoopData().loopMaxResponse).toBe(2); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('invalid response')); + + processor.checkLoopMaxData('D_100', '1'); + const afterLoop = processor.findQuestion('_CONTINUE1_1_1'); + expect(afterLoop.question.id).toBe('AFTER'); + expect(afterLoop.index).toBe(processor.questions.findIndex(({ questionIDExactSearch }) => questionIDExactSearch === 'AFTER')); + + processor.checkLoopMaxData('D_100', '0'); + expect(processor.findQuestion('_CONTINUE1_1_1').question.id).toBe('AFTER'); + }); + + it('reconstructs loop data when resuming after the first iteration', async () => { + const { processor } = await createProcessor(LOOP_MARKDOWN, { D_100: '2' }); + const secondLoopIndex = processor.questions.findIndex(({ questionIDExactSearch }) => questionIDExactSearch === 'ITEM_2_2'); + processor.setCurrentQuestionIndex('update', secondLoopIndex); + + expect(processor.loopDataArr).toEqual([]); + expect(processor.getLoopData()).toMatchObject({ + locationIndex: secondLoopIndex - 1, + loopMaxResponse: 2, + loopFirstQuestionID: 'ITEM', + }); + }); + + it('selects the nearest preceding loop and localizes generated ordinals', async () => { + const { processor } = await createProcessor(` + {"name":"MULTIPLE_LOOPS"} + [D_101?] First count |__|__|id=D_101| + + [FIRST?,displayif=greaterThanOrEqual(D_101,#loop)] First {##}. + + [D_102?] Second count |__|__|id=D_102| + + [SECOND?,displayif=greaterThanOrEqual(D_102,#loop)] Second {##}. + + [END,end] Done. + `, { D_101: '1', D_102: '1' }, { language: 'es' }); + + processor.processAllQuestions(); + const secondLoopIndex = processor.questions.findIndex(({ questionIDExactSearch }) => questionIDExactSearch === 'SECOND_1_1'); + processor.setCurrentQuestionIndex('update', secondLoopIndex); + + expect(processor.getLoopData()).toMatchObject({ + loopMaxQuestionID: 'D_102', + loopFirstQuestionID: 'SECOND', + }); + expect(processById(processor, 'SECOND_1_1').textContent).toContain('1o'); + }); + + it('returns explicit fallbacks when no loop metadata or terminal marker exists', async () => { + const { processor, moduleParams } = await createProcessor(` + {"name":"NO_LOOP"} + [Q1] Only question. + [END,end] Done. + `); + + expect(processor.getLoopData()).toBeNull(); + expect(processor.findEndOfLoop()).toEqual({ question: null, index: -1 }); + expect(processor.findQuestion('_CONTINUE1_1_1')).toBeNull(); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('no end of loop found')); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('loop data not found')); + }); + + it('preserves authored loop metadata and English teen ordinals', async () => { + const { processor } = await createProcessor(` + {"name":"LOOP_ORDINALS"} + [D_300?] Count |__|__|id=D_300| + + [ITEM?|firstquestion=#loop|,displayif=greaterThanOrEqual(D_300,#loop)] Item {##}. + + [END,end] Done. + `, { D_300: '13' }); + + expect(processById(processor, 'ITEM_11_11').textContent).toContain('11th'); + expect(processById(processor, 'ITEM_12_12').textContent).toContain('12th'); + expect(processById(processor, 'ITEM_13_13').textContent).toContain('13th'); + expect(processById(processor, 'ITEM_1_1')).toMatchObject({ + id: 'ITEM_1_1', + }); + expect(processById(processor, 'ITEM_1_1').getAttribute('firstquestion')).toBe('1'); + expect(processById(processor, 'ITEM_1_1').getAttribute('loopmax')).toBe('D_300'); + }); +}); + +describe('QuestionProcessor grid and related-form lookup', () => { + const LOOKUP_MARKDOWN = ` + {"name":"LOOKUPS"} + [D_200] Existing dependency. + [COMPOUND?] Compound |__|id=COMPOUND_VALUE| + [CONDITIONAL?] Conditional |__|id=CONDITIONAL_VALUE displayif=doesNotExist("D_200")| + [HIDDEN] Hidden |hidden|id=HIDDEN_VALUE| + |grid?|id="GRID_LOOKUP"|Frequency|[ROW_A] Alpha;|(1: Never)(2: Often)| + [END,end] Done. + `; + + it('resolves grid response values and reports unknown grid controls', async () => { + const { processor, moduleParams } = await createProcessor(LOOKUP_MARKDOWN); + + expect(processor.findGridRadioCheckboxEle('ROW_A_0')).toBe('1'); + expect(processor.findGridRadioCheckboxEle('ROW_A_1')).toBe('2'); + processor.findQuestion('GRID_LOOKUP').question.querySelector('#ROW_A_0').value = ''; + expect(processor.findGridRadioCheckboxEle('ROW_A_0')).toBeNull(); + expect(processor.findGridRadioCheckboxEle('MISSING_GRID_CONTROL')).toBeNull(); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('MISSING_GRID_CONTROL')); + }); + + it('finds owning forms while excluding same-ID, hidden, conditional, and missing controls', async () => { + const withDependency = await createProcessor(LOOKUP_MARKDOWN, { D_200: 'present' }); + expect(withDependency.processor.findRelatedFormID('COMPOUND_VALUE')).toBe('COMPOUND'); + expect(withDependency.processor.findRelatedFormID('COMPOUND')).toBe(''); + expect(withDependency.processor.findRelatedFormID('HIDDEN_VALUE')).toBe(''); + expect(withDependency.processor.findRelatedFormID('CONDITIONAL_VALUE')).toBe('CONDITIONAL'); + expect(withDependency.processor.findRelatedFormID('MISSING_CONTROL')).toBe(''); + expect(withDependency.moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('MISSING_CONTROL')); + + const withoutDependency = await createProcessor(LOOKUP_MARKDOWN); + expect(withoutDependency.processor.findRelatedFormID('CONDITIONAL_VALUE')).toBe(''); + }); +}); + +describe('QuestionProcessor parser boundaries', () => { + it('adds a localized placeholder to an otherwise empty host-provided async question', async () => { + const { processor } = await createProcessor(` + {"name":"ASYNC_PLACEHOLDER"} + [ASYNC?] + [END,end] Done. + `, {}, { + asyncQuestionsMap: { + '[ASYNC?]': { func: 'loadSyntheticQuestion', args: [] }, + }, + }); + + expect(processById(processor, 'ASYNC').textContent).toContain('Loading...'); + }); + + it('generates stable default IDs and renders terminal button variants', async () => { + const { processor } = await createProcessor(` + {"name":"PARSER_BOUNDARIES"} + [EMAIL?] Email |@| + [PHONE?] Phone |tel| + [DATE?] Date |date| + [MONTH?] Month |month| + [TIME?] Time |time| + [STOP?,end=noback] Stop here |__|| + [END,end] Done. + `); + + expect(processById(processor, 'EMAIL').querySelector('#EMAIL_email')).not.toBeNull(); + expect(processById(processor, 'PHONE').querySelector('#PHONE_tel')).not.toBeNull(); + expect(processById(processor, 'DATE').querySelector('#DATE_date')).not.toBeNull(); + expect(processById(processor, 'MONTH').querySelector('#MONTH_month')).not.toBeNull(); + expect(processById(processor, 'TIME').querySelector('#TIME_time')).not.toBeNull(); + + const stop = processById(processor, 'STOP'); + expect(stop.querySelector('.next')).toBeNull(); + expect(stop.querySelector('.previous')).toBeNull(); + expect(stop.querySelector('[data-click-type="reset"]')).not.toBeNull(); + + const end = processById(processor, 'END'); + expect(end.querySelector('[data-click-type="submitSurvey"]')).not.toBeNull(); + expect(end.querySelector('.previous')).not.toBeNull(); + expect(end.querySelector('.next')).toBeNull(); + }); + + it('preserves legacy alphanumeric choice, nested-text, naming, and skip metadata', async () => { + const { processor } = await createProcessor(` + {"name":"LEGACY_COMBINED_CONTROLS"} + [DEFAULT_GROUP?] Other response. + [other] Explain -> END + [NAMED_GROUP?] Named response. + (other:CUSTOM_GROUP) Explain -> END + [EXPLICIT_ID_GROUP?] Explicit ID response. + [other|id=EXPLICIT_CHOICE] Explain -> END + [END,end] Done. + `); + + const defaultChoice = processById(processor, 'DEFAULT_GROUP').querySelector('#DEFAULT_GROUP_other'); + expect(defaultChoice).toMatchObject({ + type: 'checkbox', + name: 'DEFAULT_GROUP', + value: 'other', + }); + expect(defaultChoice.getAttribute('skipto')).toBe('END'); + expect(defaultChoice.labels[0].querySelector('#DEFAULT_TEXT')).not.toBeNull(); + + const namedChoice = processById(processor, 'NAMED_GROUP').querySelector('#CUSTOM_GROUP'); + expect(namedChoice).toMatchObject({ + type: 'radio', + name: 'CUSTOM_GROUP', + value: 'other', + }); + expect(namedChoice.getAttribute('skipto')).toBe('END'); + expect(namedChoice.labels[0].querySelector('#NAMED_TEXT')).not.toBeNull(); + + const explicitChoice = processById(processor, 'EXPLICIT_ID_GROUP').querySelector('#EXPLICIT_CHOICE'); + expect(explicitChoice).toMatchObject({ + type: 'checkbox', + name: 'EXPLICIT_ID_GROUP', + value: 'other', + }); + expect(explicitChoice.getAttribute('skipto')).toBe('END'); + expect(explicitChoice.labels[0].querySelector('#EXPLICIT_TEXT')).not.toBeNull(); + }); + + it('handles optionless text controls, restored dates, wide ranges, and titleless popovers', async () => { + const { processor } = await createProcessor(` + {"name":"SCALAR_PARTITIONS"} + [PROFILE] Missing profile {$u:notProvided}; direct value {$DIRECT_VALUE}. + |popup|More|Titleless help text| + [DATE_VALUE?] Date |date|value=2026-03-15| + [MONTH_VALUE?] Month |month|value=2026-03| + [WIDE_NUMBER?] Number |__|__|min=1 max=100| + [DEFAULT_TEXTBOX?] Text [text box] + [DEFAULT_TEXTAREA?] Notes |___| + [END,end] Done. + `); + + const profile = processById(processor, 'PROFILE'); + expect(profile.querySelector('[name="notProvided"]').textContent).toBe(''); + expect(profile.querySelector('[forid="DIRECT_VALUE"]').getAttribute('optional')).toBeNull(); + expect(profile.querySelector('[data-bs-toggle="popover"]')).toMatchObject({ + title: '', + }); + expect(profile.querySelector('[data-bs-toggle="popover"]').dataset.bsContent).toBe('Titleless help text'); + expect(processById(processor, 'DATE_VALUE').querySelector('input').value).toBe('2026-03-15'); + expect(processById(processor, 'MONTH_VALUE').querySelector('input').value).toBe('2026-03'); + expect(processById(processor, 'WIDE_NUMBER').querySelector('input')).toMatchObject({ + id: 'WIDE_NUMBER_num', + placeholder: 'Enter a value', + }); + expect(processById(processor, 'DEFAULT_TEXTBOX').querySelector('#DEFAULT_TEXTBOX_text')).not.toBeNull(); + expect(processById(processor, 'DEFAULT_TEXTAREA').querySelector('#DEFAULT_TEXTAREA_ta')).not.toBeNull(); + }); +}); diff --git a/tests/integration/questionnaireHelpers.spec.js b/tests/integration/questionnaireHelpers.spec.js new file mode 100644 index 0000000..9a58483 --- /dev/null +++ b/tests/integration/questionnaireHelpers.spec.js @@ -0,0 +1,202 @@ +import { describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +async function loadRuntime() { + const quest = await renderFreshQuest(); + const questionnaire = await import('../../questionnaire.js'); + return { quest, ...questionnaire }; +} + +describe('questionnaire runtime helpers', () => { + it('formats SSN and telephone values only for non-Backspace keyup events', async () => { + const { parseSSN, parsePhoneNumber } = await loadRuntime(); + const ssn = document.createElement('input'); + const phone = document.createElement('input'); + ssn.value = '123456789'; + phone.value = '5555551212'; + + parseSSN({ type: 'keyup', target: ssn, code: 'Digit9' }); + parsePhoneNumber({ type: 'keyup', target: phone, code: 'Digit2' }); + expect(ssn.value).toBe('123-45-6789'); + expect(phone.value).toBe('555-555-1212'); + + ssn.value = '12345'; + phone.value = '555555'; + parseSSN({ type: 'keyup', target: ssn, code: 'Backspace' }); + parsePhoneNumber({ type: 'keyup', target: phone, code: 'Backspace' }); + expect(ssn.value).toBe('12345'); + expect(phone.value).toBe('555555'); + }); + + it('exchanges literal, numeric, and state-backed validation attributes without evaluating dates as arithmetic', async () => { + const { quest, callExchangeValues } = await loadRuntime(); + quest.state.loadInitialSurveyState({ AGE: '7' }); + const form = document.createElement('form'); + form.innerHTML = ` + + + + `; + document.body.appendChild(form); + const number = form.querySelector('#NUMBER'); + const month = form.querySelector('#MONTH'); + const date = form.querySelector('#DATE'); + + callExchangeValues(number); + callExchangeValues(month); + callExchangeValues(date); + + expect(number.dataset.min).toBe('7'); + expect(number.dataset.max).toBe('10'); + expect(month.dataset.min).toBe('2026-02'); + expect(month.dataset.max).toBe('2026-12'); + expect(date.dataset.min).toBe('2026-02-03'); + expect(date.dataset.max).toBe('2026-12-31'); + }); + + it('resolves one and many forid values, optional fallbacks, and display containers from state', async () => { + const { quest, handleForIDAttributes } = await loadRuntime(); + quest.state.loadInitialSurveyState({ SIMPLE: 'saved', SHOW: '1', CONCEPT: '123456789' }); + + const one = document.createElement('span'); + one.setAttribute('forid', 'SIMPLE'); + one.setAttribute('optional', 'fallback'); + document.body.appendChild(one); + handleForIDAttributes([one]); + expect(one.textContent).toBe('saved'); + expect(one.getAttribute('original-forid')).toBe('SIMPLE'); + + const fallback = document.createElement('span'); + fallback.setAttribute('forid', 'MISSING'); + fallback.setAttribute('optional', 'fallback'); + document.body.appendChild(fallback); + handleForIDAttributes([fallback]); + expect(fallback.textContent).toBe('fallback'); + + const container = document.createElement('div'); + container.innerHTML = ` + + + `; + document.body.appendChild(container); + const many = [...container.querySelectorAll('[forid]')]; + handleForIDAttributes(many); + expect(many[0].textContent).toBe('saved'); + expect(many[0].parentElement.style.display).toBe(''); + expect(many[1].style.display).toBe('none'); + expect(many[1].parentElement.style.display).toBe('none'); + }); + + it('renders runtime condition text and hides concept IDs from displayif output', async () => { + const { quest, manageDisplayIfSpansAndDivs } = await loadRuntime(); + quest.state.loadInitialSurveyState({ TEXT: 'resolved response', CONCEPT: '>123456789<' }); + const value = document.createElement('span'); + value.setAttribute('displayif', 'exists("TEXT")'); + value.innerHTML = 'exists("TEXT")'; + const concept = document.createElement('span'); + concept.setAttribute('displayif', 'exists("CONCEPT")'); + concept.innerHTML = '>123456789<'; + document.body.append(value, concept); + + manageDisplayIfSpansAndDivs(value); + manageDisplayIfSpansAndDivs(concept); + expect(value.innerHTML).toBe('resolved response'); + expect(concept.style.display).toBe('none'); + }); + + it('handles modal checks, radio-with-text selection, and active state from textbox input', async () => { + const { quest, textboxinput } = await loadRuntime(); + const form = quest.root.querySelector('#Q1'); + form.querySelector('fieldset').innerHTML = ` +
+ + +
+ `; + quest.state.setNumResponseInputs('Q1', 2); + const radio = form.querySelector('#OTHER'); + const text = form.querySelector('#OTHER_TEXT'); + text.value = '6'; + + textboxinput(text); + + expect(radio.checked).toBe(true); + expect(quest.root.querySelector('#softModalResponse').classList).toContain('show'); + expect(quest.root.querySelector('#modalResponseBody').innerText).toBe('Confirm this value'); + expect(quest.state.getActiveQuestionState().Q1).toEqual({ Q1: '99', OTHER_TEXT: '6' }); + }); + + it('clears mutually exclusive checkbox and text siblings, including stale validation UI', async () => { + const { quest, handleXOR } = await loadRuntime(); + const form = quest.root.querySelector('#Q1'); + form.querySelector('fieldset').innerHTML = ` +
+ + +
Old error
+
+ `; + quest.state.setNumResponseInputs('Q1', 2); + quest.state.setResponse('Q1', 'CHECK', 2, ['1']); + quest.state.setResponse('Q1', 'TEXT', 2, 'old'); + const check = form.querySelector('#CHECK'); + const text = form.querySelector('#TEXT'); + form.querySelector('.validation-container span').innerText = 'Old error'; + + expect(handleXOR(check)).toBe('1'); + expect(text.value).toBe(''); + expect(text.classList).not.toContain('invalid'); + expect(form.querySelector('.validation-container')).toBeNull(); + expect(quest.state.getActiveQuestionState().Q1.TEXT).toBeUndefined(); + + text.value = ''; + expect(handleXOR(text)).toBeNull(); + }); + + it('evaluates grid completeness, linked input completeness, and selected response families', async () => { + const { + gridHasAllAnswers, + numUnansweredGridQuestions, + radioCbHasAllAnswers, + getSelectedResponses, + } = await loadRuntime(); + const form = document.createElement('form'); + form.innerHTML = ` +
+ + + + +
+ + +
+ `; + const fieldset = form.querySelector('fieldset'); + document.body.appendChild(form); + + expect(gridHasAllAnswers(fieldset)).toBe(false); + expect(numUnansweredGridQuestions(fieldset)).toBe(1); + form.querySelector('[name="ROW2"]').checked = true; + expect(gridHasAllAnswers(fieldset)).toBe(true); + expect(numUnansweredGridQuestions(fieldset)).toBe(0); + expect(getSelectedResponses(fieldset).map(({ id }) => id)).toEqual(expect.arrayContaining(['TEXT', 'SKIP'])); + + const linked = document.createElement('form'); + linked.innerHTML = ` + + `; + expect(radioCbHasAllAnswers(linked)).toBe(false); + linked.querySelector('input[type="text"]').value = 'complete'; + expect(radioCbHasAllAnswers(linked)).toBe(true); + }); + + it('uses the media query boundary for mobile detection', async () => { + const { isMobileDevice } = await loadRuntime(); + window.matchMedia.mockReturnValueOnce({ matches: true }); + expect(isMobileDevice()).toBe(true); + window.matchMedia.mockReturnValueOnce({ matches: false }); + expect(isMobileDevice()).toBe(false); + expect(window.matchMedia).toHaveBeenCalledWith('(max-width: 576px)'); + }); +}); diff --git a/tests/integration/responsePiping.spec.js b/tests/integration/responsePiping.spec.js new file mode 100644 index 0000000..cca3aa0 --- /dev/null +++ b/tests/integration/responsePiping.spec.js @@ -0,0 +1,169 @@ +import { describe, expect, it, vi } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +const SCALAR_PIPE_SURVEY = ` +{"name":"PIPE_SCALAR"} + +[SOURCE?] Enter the name we should use. +|__|id=SOURCE_TEXT| + +[PROMPT] Hello {$SOURCE_TEXT:participant}. Please continue. + +[SUMMARY] Summary: {$SOURCE_TEXT}. + +[END,end] Done. +`; + +const SUMMARY_PIPE_SURVEY = ` +{"name":"PIPE_SUMMARY"} + +[ENTRY?] Optional entry. +|__|id=MISSING| + +[SUMMARY] Values: {$FIRST} / {$MISSING} / {$WHITESPACE}. +[FALLBACK] Hello {$MISSING:participant}. +[CONCEPT] Sensitive {$CONCEPT:masked}. +[END,end] Done. +`; + +const DISPLAY_LIST_PIPE_SURVEY = ` +{"name":"PIPE_LIST"} + +[SELECT?] Select all that apply. +[1:CHOICES] Alpha +[2:CHOICES] Beta +[99:CHOICES] Other: |__|id=OTHER_TEXT| + +[SUMMARY] Selected: |displayList(valueIsOneOf("CHOICES",1),"Alpha",valueIsOneOf("CHOICES",2),"Beta",exists("OTHER_TEXT"),"Other",exists("OTHER_TEXT"),"OTHER_TEXT",sep="; ")| +[END,end] Done. +`; + +function treeAt(questionID) { + return JSON.stringify({ + rootNode: { value: null, children: [{ value: questionID, children: [] }] }, + currentNode: questionID, + }); +} + +async function activeQuestion(quest, questionID) { + if (questionID) { + await vi.waitFor(() => expect(quest.root.querySelector('form.question.active')?.id).toBe(questionID)); + } + return quest.root.querySelector('form.question.active'); +} + +async function next(quest) { + (await activeQuestion(quest)).querySelector('.next').click(); +} + +async function back(quest) { + (await activeQuestion(quest)).querySelector('.previous').click(); +} + +function focusout(input) { + input.dispatchEvent(new FocusEvent('focusout', { bubbles: true })); +} + +describe('response piping through participant runtime state', () => { + it('pipes a delegated text response into a following question and summary, stores it, and refreshes it after Back/edit', async () => { + const quest = await renderFreshQuest({ markdown: SCALAR_PIPE_SURVEY }); + const source = quest.root.querySelector('#SOURCE_TEXT'); + + source.value = 'Original name'; + focusout(source); + expect(quest.state.getActiveQuestionState()).toEqual({ SOURCE: 'Original name' }); + + await next(quest); + expect((await activeQuestion(quest, 'PROMPT')).textContent).toContain('Hello Original name'); + await vi.waitFor(() => expect(quest.calls.store).toHaveLength(1)); + expect(quest.calls.store[0]['PIPE_SCALAR.SOURCE']).toBe('Original name'); + + await back(quest); + await activeQuestion(quest, 'SOURCE'); + expect(quest.root.querySelector('#SOURCE_TEXT').value).toBe('Original name'); + + source.value = 'Updated name'; + focusout(source); + await next(quest); + expect((await activeQuestion(quest, 'PROMPT')).textContent).toContain('Hello Updated name'); + await next(quest); + expect((await activeQuestion(quest, 'SUMMARY')).textContent).toContain('Summary: Updated name'); + expect(quest.state.getSurveyState().SOURCE).toBe('Updated name'); + expect(quest.errors).toEqual([]); + }); + + it('pipes persisted state when resuming directly at a summary', async () => { + const quest = await renderFreshQuest({ + markdown: SCALAR_PIPE_SURVEY, + persistedData: { + SOURCE: 'Resumed name', + treeJSON: treeAt('SUMMARY'), + }, + }); + + expect((await activeQuestion(quest, 'SUMMARY')).textContent).toContain('Summary: Resumed name'); + expect(quest.state.getCache().SOURCE).toBe('Resumed name'); + expect(quest.errors).toEqual([]); + }); + + it('keeps populated multi-value summary spans, hides missing ones, retains whitespace, and handles fallback and concept suppression', async () => { + const quest = await renderFreshQuest({ + markdown: SUMMARY_PIPE_SURVEY, + persistedData: { + FIRST: 'First value', + WHITESPACE: ' ', + CONCEPT: '123456789', + treeJSON: treeAt('SUMMARY'), + }, + }); + + const summary = await activeQuestion(quest, 'SUMMARY'); + const summaryValues = [...summary.querySelectorAll('span[forid]')]; + expect(summaryValues.map(({ textContent, style }) => ({ textContent, display: style.display }))).toEqual([ + { textContent: 'First value', display: '' }, + { textContent: 'MISSING', display: 'none' }, + { textContent: ' ', display: '' }, + ]); + + await next(quest); + expect((await activeQuestion(quest, 'FALLBACK')).textContent).toContain('Hello participant'); + await next(quest); + const concept = await activeQuestion(quest, 'CONCEPT'); + expect(concept.querySelector('[forid="CONCEPT"]').textContent).toBe(''); + expect(concept.textContent).not.toContain('123456789'); + expect(quest.errors).toEqual([]); + }); + + it('uses checkbox selections and nested Other text in a displayList summary', async () => { + const quest = await renderFreshQuest({ markdown: DISPLAY_LIST_PIPE_SURVEY }); + const select = await activeQuestion(quest, 'SELECT'); + const alpha = select.querySelector('#CHOICES_1'); + const other = select.querySelector('#CHOICES_99'); + const detail = select.querySelector('#OTHER_TEXT'); + + vi.useFakeTimers(); + try { + alpha.click(); + other.click(); + detail.value = 'Participant detail'; + detail.dispatchEvent(new InputEvent('input', { bubbles: true, data: 'l', inputType: 'insertText' })); + await vi.advanceTimersByTimeAsync(250); + expect(quest.state.getActiveQuestionState().SELECT).toEqual({ + CHOICES: ['1', '99'], + OTHER_TEXT: 'Participant detail', + }); + } finally { + vi.useRealTimers(); + } + + await next(quest); + expect((await activeQuestion(quest, 'SUMMARY')).textContent).toContain('Alpha; Other; Participant detail'); + await vi.waitFor(() => expect(quest.calls.store).toHaveLength(1)); + expect(quest.calls.store[0]['PIPE_LIST.SELECT']).toEqual({ + CHOICES: ['1', '99'], + OTHER_TEXT: 'Participant detail', + }); + expect(quest.errors).toEqual([]); + }); + +}); diff --git a/tests/integration/restoreResponses.spec.js b/tests/integration/restoreResponses.spec.js new file mode 100644 index 0000000..eeacfc7 --- /dev/null +++ b/tests/integration/restoreResponses.spec.js @@ -0,0 +1,125 @@ +import { describe, expect, it } from 'vitest'; +import { renderFreshQuest } from '../helpers/questRuntime.js'; + +function treeAt(questionID) { + return JSON.stringify({ + rootNode: { value: null, children: [{ value: questionID, children: [] }] }, + currentNode: questionID, + }); +} + +describe('response restoration', () => { + it('restores a simple text response into the active input', async () => { + const quest = await renderFreshQuest({ + markdown: ` + {"name":"RESTORE_TEXT"} + [TEXT?] Enter text. |__|id=TEXT_VALUE| + [END,end] Done. + `, + persistedData: { TEXT: 'saved text', treeJSON: treeAt('TEXT') }, + }); + + expect(quest.root.querySelector('#TEXT_VALUE').value).toBe('saved text'); + expect(quest.state.getActiveQuestionState().TEXT).toBe('saved text'); + }); + + it('restores every checked value in a checkbox array', async () => { + const quest = await renderFreshQuest({ + markdown: ` + {"name":"RESTORE_CHECKS"} + [CHECK?] Select all. + [1] First + [2] Second + [3] Third + [END,end] Done. + `, + persistedData: { CHECK: ['1', '3'], treeJSON: treeAt('CHECK') }, + }); + + expect(quest.root.querySelector('#CHECK_1').checked).toBe(true); + expect(quest.root.querySelector('#CHECK_2').checked).toBe(false); + expect(quest.root.querySelector('#CHECK_3').checked).toBe(true); + expect(quest.state.getActiveQuestionState().CHECK).toEqual(['1', '3']); + }); + + it('restores compound strings, radio values, and checkbox arrays by response key', async () => { + const quest = await renderFreshQuest({ + markdown: ` + {"name":"RESTORE_COMPOUND"} + [MULTI?] Supply several values. + [1:CHECK_GROUP] First + [2:CHECK_GROUP] Second + (7:RADIO_GROUP) Seven + (8:RADIO_GROUP) Eight + |__|id=DETAIL| + [END,end] Done. + `, + persistedData: { + MULTI: { + CHECK_GROUP: ['1', '2'], + RADIO_GROUP: '8', + DETAIL: 'restored detail', + }, + treeJSON: treeAt('MULTI'), + }, + }); + + expect(quest.root.querySelector('#CHECK_GROUP_1').checked).toBe(true); + expect(quest.root.querySelector('#CHECK_GROUP_2').checked).toBe(true); + expect(quest.root.querySelector('#RADIO_GROUP_8').checked).toBe(true); + expect(quest.root.querySelector('#DETAIL').value).toBe('restored detail'); + }); + + it('restores XOR object values into authored XOR controls', async () => { + const quest = await renderFreshQuest({ + markdown: ` + {"name":"RESTORE_XOR"} + [XORQ?] Enter an XOR value. |__|id=XOR_FIELD xor=XOR_GROUP| + [END,end] Done. + `, + persistedData: { + XORQ: { XOR_GROUP: { XOR_FIELD: 'exclusive value' } }, + treeJSON: treeAt('XORQ'), + }, + }); + + expect(quest.root.querySelector('#XOR_FIELD').value).toBe('exclusive value'); + }); + + it('ignores dynamically absent controls while retaining persisted state', async () => { + const quest = await renderFreshQuest({ + markdown: ` + {"name":"RESTORE_DYNAMIC"} + [DYNAMIC?] The host may add this control later. + [END,end] Done. + `, + persistedData: { DYNAMIC: 'host-owned value', treeJSON: treeAt('DYNAMIC') }, + }); + + expect(quest.rendered).toBe(true); + expect(quest.state.getSurveyState().DYNAMIC).toBe('host-owned value'); + expect(quest.errors).toEqual([]); + }); + + it('logs malformed object keys, unsupported response types, and unmatched radio values', async () => { + const quest = await renderFreshQuest(); + const { restoreResponses } = await import('../../restoreResponses.js'); + + restoreResponses({ Q1: { '': 'bad' } }, 'Q1'); + restoreResponses({ Q1: 42 }, 'Q1'); + restoreResponses({ Q1: 'missing-radio-value' }, 'Q1'); + + expect(quest.errors.flat().join(' ')).toContain('skipping'); + expect(quest.errors.flat().join(' ')).toContain('unhandled response type'); + expect(quest.errors.flat().join(' ')).toContain('Problem with radio'); + }); + + it('does nothing when the question or persisted response is absent', async () => { + const quest = await renderFreshQuest(); + const { restoreResponses } = await import('../../restoreResponses.js'); + + expect(() => restoreResponses({}, 'Q1')).not.toThrow(); + expect(() => restoreResponses({ MISSING: 'value' }, 'MISSING')).not.toThrow(); + expect(quest.errors).toEqual([]); + }); +}); diff --git a/tests/integration/validation.spec.js b/tests/integration/validation.spec.js new file mode 100644 index 0000000..2e58f48 --- /dev/null +++ b/tests/integration/validation.spec.js @@ -0,0 +1,205 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { loadFreshModuleGraph } from '../helpers/questRuntime.js'; + +function appendInput({ type = 'text', value = '', attributes = {}, className = '' } = {}) { + const form = document.createElement('form'); + const input = document.createElement('input'); + input.type = type; + input.value = value; + input.className = className; + Object.entries(attributes).forEach(([key, attributeValue]) => { + input.setAttribute(key, attributeValue === true ? '' : String(attributeValue)); + }); + form.appendChild(input); + document.body.appendChild(form); + return { form, input }; +} + +describe('validation through exported behavior', () => { + let validateInput; + let moduleParams; + + beforeEach(async () => { + ({ questionnaire: { moduleParams } } = await loadFreshModuleGraph()); + ({ validateInput } = await import('../../validate.js')); + }); + + it('marks required empty values invalid and clears the message after correction', () => { + const { form, input } = appendInput({ type: 'text', attributes: { 'data-required': true } }); + + validateInput(input); + expect(input.classList).toContain('invalid'); + expect(form.classList).toContain('invalid'); + expect(input.nextElementSibling.firstElementChild.innerText).toContain('Please fill out this field'); + + input.value = 'valid'; + validateInput(input); + expect(input.classList).not.toContain('invalid'); + expect(form.classList).not.toContain('invalid'); + expect(input.nextElementSibling).toBeNull(); + }); + + it.each([ + ['1', { 'data-min': '2', 'data-max': '8' }, 'greater than or equal to 2'], + ['9', { 'data-min': '2', 'data-max': '8' }, 'less than or equal to 8'], + ])('validates numeric boundaries for %s', (value, attributes, expected) => { + const { input } = appendInput({ type: 'number', value, attributes }); + validateInput(input); + expect(input.nextElementSibling.firstElementChild.innerText).toContain(expected); + }); + + it('accepts an in-range number', () => { + const { input } = appendInput({ type: 'number', value: '5', attributes: { 'data-min': '2', 'data-max': '8' } }); + validateInput(input); + expect(input.classList).not.toContain('invalid'); + }); + + it.each([ + ['email', 'invalid', 'email address'], + ['tel', '555-123', 'phone number'], + ['text', '000-00-0000', 'valid Social Security Number', 'SSN'], + ['text', '0000', 'last four digits', 'SSNsm'], + ])('rejects invalid %s input', (type, value, message, className = '') => { + const { input } = appendInput({ type, value, className }); + validateInput(input); + expect(input.nextElementSibling.firstElementChild.innerText).toContain(message); + }); + + it.each([ + ['email', 'person@example.org'], + ['tel', '555-555-1212'], + ['text', '123-45-6789', 'SSN'], + ['text', '1234', 'SSNsm'], + ])('accepts a valid %s input', (type, value, className = '') => { + const { input } = appendInput({ type, value, className }); + validateInput(input); + expect(input.classList).not.toContain('invalid'); + }); + + it('validates minimum, maximum, and exact text length', () => { + const short = appendInput({ value: 'a', attributes: { 'data-minlen': 2 } }).input; + validateInput(short); + expect(short.nextElementSibling.firstElementChild.innerText).toContain('at least 2'); + + const long = appendInput({ value: 'abcd', attributes: { 'data-maxlen': 3 } }).input; + validateInput(long); + expect(long.nextElementSibling.firstElementChild.innerText).toContain('at most 3'); + + const exact = appendInput({ value: 'ab', attributes: { 'data-minlen': 3, 'data-maxlen': 3 } }).input; + validateInput(exact); + expect(exact.nextElementSibling.firstElementChild.innerText).toContain('should have 3'); + }); + + it('normalizes MM-YYYY month input and enforces month boundaries', () => { + const input = document.createElement('input'); + const form = document.createElement('form'); + input.setAttribute('type', 'month'); + Object.defineProperty(input, 'value', { value: '02-2026', writable: true }); + input.dataset.minDate = encodeURIComponent('2026-01'); + input.dataset.maxDate = encodeURIComponent('2026-12'); + form.appendChild(input); + document.body.appendChild(form); + + validateInput(input); + expect(input.value).toBe('2026-02'); + expect(input.classList).not.toContain('invalid'); + }); + + it.each([ + ['2025-12-31', { 'data-min-date': '2026-01-01' }, 'after 1/1/2026'], + ['2027-01-01', { 'data-max-date': '2026-12-31' }, 'before 12/31/2026'], + ])('validates date boundary %s', (value, attributes, message) => { + const { input } = appendInput({ type: 'date', value, attributes }); + validateInput(input); + expect(input.nextElementSibling.firstElementChild.innerText).toContain(message); + }); + + it('accepts a date inside its authored boundaries', () => { + const { input } = appendInput({ + type: 'date', + value: '2026-06-15', + attributes: { 'data-min-date': '2026-01-01', 'data-max-date': '2026-12-31' }, + }); + validateInput(input); + expect(input.classList).not.toContain('invalid'); + }); + + it.each([ + ['not-a-month', {}, 'YYYY-MM'], + ['2025-12', { min: '2026-01' }, 'after 2026-01'], + ['2027-01', { max: '2026-12' }, 'before 2026-12'], + ])('rejects invalid or out-of-range month value %s', (value, boundaries, message) => { + const input = document.createElement('input'); + const form = document.createElement('form'); + input.setAttribute('type', 'month'); + Object.defineProperty(input, 'value', { value, writable: true }); + if (boundaries.min) input.dataset.minDate = encodeURIComponent(boundaries.min); + if (boundaries.max) input.dataset.maxDate = encodeURIComponent(boundaries.max); + form.appendChild(input); + document.body.appendChild(form); + + validateInput(input); + expect(input.nextElementSibling.firstElementChild.innerText).toContain(message); + }); + + it('validates checkbox minimum and maximum counts at the end of a response list', () => { + const form = document.createElement('form'); + form.dataset.minCount = '2'; + form.dataset.maxCount = '2'; + form.innerHTML = ` +
+
+
+ `; + document.body.appendChild(form); + const inputs = [...form.querySelectorAll('input')]; + const lastResponse = form.lastElementChild; + + validateInput(inputs[0]); + expect(lastResponse.nextElementSibling.firstElementChild.innerText).toContain('selected 1'); + + inputs[1].checked = true; + validateInput(inputs[1]); + expect(lastResponse.classList).not.toContain('invalid'); + + inputs[2].checked = true; + validateInput(inputs[2]); + expect(lastResponse.nextElementSibling.firstElementChild.innerText).toContain('selected 3'); + }); + + it('adds mismatch errors to both confirmation fields and clears both after correction', () => { + vi.spyOn(console, 'warn').mockImplementation(() => {}); + const form = document.createElement('form'); + form.innerHTML = ` + + + `; + document.body.appendChild(form); + const original = form.querySelector('#ORIGINAL'); + const confirmation = form.querySelector('#CONFIRM'); + + validateInput(confirmation); + expect(original.classList).toContain('invalid'); + expect(confirmation.classList).toContain('invalid'); + expect(confirmation.nextElementSibling.firstElementChild.innerText).toContain('do not match'); + + confirmation.value = 'first'; + validateInput(confirmation); + expect(original.classList).not.toContain('invalid'); + expect(confirmation.classList).not.toContain('invalid'); + }); + + it('intentionally skips validation for native radio and time controls', () => { + const radio = appendInput({ type: 'radio', value: '1' }).input; + const time = appendInput({ type: 'time', value: '10:30' }).input; + validateInput(radio); + validateInput(time); + expect(moduleParams.errorLogger).not.toHaveBeenCalled(); + }); + + it('reports unsupported input types through the host logger', () => { + const { input } = appendInput({ type: 'color', value: '#ffffff' }); + validateInput(input); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('no handle for type: color'), input); + }); +}); diff --git a/tests/knownDefects/registry.js b/tests/knownDefects/registry.js new file mode 100644 index 0000000..eb4120a --- /dev/null +++ b/tests/knownDefects/registry.js @@ -0,0 +1,99 @@ +const DEFAULT_OWNER = 'Quest maintainers'; +const DEFAULT_EXPIRY = '2027-08-04'; + +function defect(localDefectId, target, reason, extra = {}) { + return Object.freeze({ + localDefectId, + target, + reason, + owner: DEFAULT_OWNER, + expiry: DEFAULT_EXPIRY, + ...extra, + }); +} + +/** + * Existing Quest behavior characterized before production changes resume. + * Behavioral reproductions run in the non-blocking known-defect lane. Registry + * metadata and expiry are checked in the blocking quality lane so accepted + * failures must be fixed, removed, or renewed before they become + * permanent. + */ +export const runtimeDefects = Object.freeze({ + treeDepthFirst: defect('QD-TREE-001', 'Tree.next depth-first traversal across root siblings', 'Traversal stops after the first root branch instead of continuing to later siblings.'), + treePrune: defect('QD-TREE-002', 'Tree.prune branch removal', 'Pruning does not return to the authored predecessor with the expected sibling structure intact.'), + treeHasNext: defect('QD-TREE-003', 'Tree.hasNext non-mutating lookahead', 'Lookahead reports false for the first root child even though a next value exists.'), + gridRowCondition: defect('QD-GRID-001', 'Radio-grid row displayif encoding', 'The row condition is encoded more than once and cannot be decoded to the authored expression.'), + gridBackFocusLifecycle: defect('QD-GRID-002', 'Grid Back focus-helper lifecycle', 'Returning to a previously answered grid restores its values but logs that the focus helper is missing instead of preserving a valid focus-management node.', { + sourcePaths: ['prod/module2.txt'], + questionId: 'D_981441822', + }), + mathDotValue: defect('QD-MATH-001', 'MathJS dot-notation value lookup', 'A valid leaf in a one-property response object is not returned.'), + mathDotExists: defect('QD-MATH-002', 'MathJS dot-notation existence lookup', 'exists() does not recognize a valid nested response leaf.'), + mathMonthRange: defect('QD-MATH-003', 'dateCompare documented month range', 'dateCompare accepts month 12 even though its contract documents zero through eleven.'), + legacyQuotedString: defect('QD-COND-001', 'Legacy condition quoted-string fallback', 'Fallback parsing drops or misinterprets quoted string literals.'), + corpusMalformedCondition: defect('QD-CORPUS-001', 'Malformed production condition fallback', 'The truncated COVID-19 grid condition falls back to a truthy function-name string, so its false outcome and hidden state are unreachable.', { + owner: 'Questionnaire maintainers', + corpusCommit: '7ae99a22af325cf0e14be047a7636462db9bfd50', + sourcePaths: ['prod/moduleCOVID19.txt', 'prod/moduleCOVID19Spanish.txt'], + questionId: 'D_114280729', + }), + storeRollback: defect('QD-STORE-001', 'Store failure state rollback', 'Navigation rolls back after non-200/rejected writes, but the pre-write response snapshot is not restored.'), + sequentialHostCallbacks: defect('QD-STATE-001', 'Sequential render host callback rebinding', 'Module-level state keeps the first render host callbacks when a second survey is rendered in the same document.'), + finalCompoundResponseRemoval: defect('QD-STATE-002', 'Final compound response removal', 'Removing the final key assigns undefined without deleting the enumerable key, leaving a stale response object in active state.'), + clearedRestoredResponseLookup: defect('QD-STATE-003', 'Cleared restored response lookup', 'Clearing a restored scalar removes its live index entries, but lookup falls back to the old value retained in survey state.'), + unsyncedArrayResponseLookup: defect('QD-STATE-004', 'Unsynced array response lookup', 'Live cache lookup excludes arrays and objects, so an unsynced checkbox-array response cannot be found until it reaches survey state.'), + backResumeResponseRestoration: defect('QD-STATE-005', 'Back-generated tree token response restoration on resume', 'Back persists the authored question token with its ? or ! marker, but startup looks up the retained response under that raw token instead of the normalized form ID, leaving the resumed answer visually unselected.'), + malformedLoopContinuation: defect('QD-QP-001', 'Malformed loop-continuation target handling', 'A malformed _CONTINUE target dereferences a failed regular-expression match instead of logging the invalid target and returning no question.'), + currentQuestionUpperBoundary: defect('QD-QP-002', 'Current-question upper-bound guard', 'An index equal to the question count passes the range guard and attempts to process an undefined question.'), + missingConfirmationTarget: defect('QD-QP-003', 'Missing confirmation target handling', 'A confirmation input that references a missing peer removes its invalid attribute but then dereferences the missing peer.'), + missingQuestionId: defect('QD-QP-004', 'Missing question-ID lookup', 'findQuestion logs a missing ID but then calls startsWith on the absent value instead of returning its documented not-found result.'), + explicitCombinedChoiceName: defect('QD-QP-005', 'Explicit name metadata on legacy combined choices', 'The combined-choice parser interpolates the full regular-expression match array, producing a duplicated comma-separated name instead of the authored name.'), + submitFocusRestore: defect('QD-A11Y-001', 'Submit-dialog Escape focus restoration', 'The dialog closes on Escape but leaves focus inactive instead of returning it to the Submit Survey trigger.'), + modalQuestionFocusRace: defect('QD-A11Y-002', 'Question-to-modal focus handoff', 'A pending delayed question-focus callback can run after a response dialog opens and move focus away from the dialog title.'), + staleSelectionAnnouncement: defect('QD-A11Y-003', 'Selection announcement after navigation', 'A delayed selection announcement can repopulate the live region after Next or Back explicitly clears it.'), + gridDeferredFocusAfterNavigation: defect('QD-A11Y-004', 'Windows grid focus-helper after navigation', 'A pending Windows grid-focus callback can move the shared helper back into an inactive grid after the participant advances.'), + authoringFallbackClear: defect('QD-AUTHOR-001', 'Authoring clear-memory operation after localforage fallback', 'The fallback storage adapter has no removeItem method, so Clear Memory throws after initialization falls back.', { + source: 'index.html authoring interface', + }), +}); + +export const axeDefects = Object.freeze({ + progressbarName: defect('QD-AXE-001', '#progressBar accessible name', 'The progressbar has no accessible name.', { ruleId: 'aria-progressbar-name', impact: 'serious', targets: ['#progressBar'] }), + progressbarValue: defect('QD-AXE-002', '#progressBar ARIA value', 'The progressbar exposes an invalid ARIA attribute value.', { ruleId: 'aria-valid-attr-value', impact: 'critical', targets: ['#progressBar'] }), + emptyGridHeader: defect('QD-AXE-003', 'Grid row-header spacer', 'The responsive grid contains an empty table header cell.', { ruleId: 'empty-table-header', impact: 'minor', targets: ['.nr.hr'] }), + validationContrast: defect('QD-AXE-004', 'Validation message contrast', 'The visible validation message does not meet the required color contrast.', { ruleId: 'color-contrast', impact: 'serious', targets: ['.validation-container > span'] }), + validationLabel: defect('QD-AXE-005', 'Bounded numeric input label', 'The input relies on a title-only label relationship.', { ruleId: 'label-title-only', impact: 'serious', targets: ['#bounded'] }), + imageAlt: defect('QD-AXE-006', 'Question image text alternative', 'QuestionProcessor emits an image without an alternative text attribute.', { ruleId: 'image-alt', impact: 'critical', targets: ['#PLAIN img'] }), +}); + +export const accessibilityDefects = Object.freeze({ + compoundQuestionContext: defect('QD-A11Y-005', 'Compound-question radio context', 'Radio choices in a multi-subgroup form are named only by their response option, not the subgroup prompt that gives the choice its meaning.', { + sourcePaths: ['prod/moduleDietScreener', 'prod/moduleDietScreenerSpanish.txt'], + questionId: 'D_916948380', + automatedContract: 'Each radio choice exposes both its subgroup prompt and its response option in its accessible name or equivalent accessible context.', + manualContract: 'Verify that VoiceOver and JAWS announce the food or sub-question prompt together with the selected frequency when moving across a compound form.', + }), + 1079: defect('CONNECT-1079', 'Quest 2 participant choice semantics', 'Choice inputs are not consistently exposed to assistive technology with their native role, accessible name, and checked state.', { + issue: 'https://github.com/episphere/connect/issues/1079', + title: 'Quest2 - JAWS and VoiceOver for Quest2', + scope: 'Quest 2 participant runtime only; Quest 1 is intentionally out of scope.', + automatedContract: 'Each choice remains discoverable by native radio role and accessible name, and exposes its checked state.', + manualContract: 'Recheck real VoiceOver/Safari and JAWS/Chrome or Edge announcement, focus, and activation after the PWA redesign.', + limitation: 'Playwright accessibility trees do not run VoiceOver or JAWS and cannot validate their command-routing modes.', + }), + 1587: defect('CONNECT-1587', 'Native participant keyboard behavior', 'Quest delegated key handling suppresses browser-native input behavior.', { + issue: 'https://github.com/episphere/connect/issues/1587', + title: 'Keyboard Navigation for Quest', + scope: 'Keyboard-only operation without requiring a screen reader.', + automatedContract: 'Focused native radios, checkboxes, and selects retain their standard Space and arrow-key behavior.', + manualContract: 'Test Tab/Shift+Tab, Enter, Space, radio arrows, checkbox Space, and native select keys separately from screen-reader commands.', + limitation: 'VoiceOver Quick Nav and the JAWS Virtual Cursor alter key routing; those are recorded in the manual matrix instead of treated as raw browser key events.', + }), +}); + +export const allKnownDefects = Object.freeze([ + ...Object.values(runtimeDefects), + ...Object.values(axeDefects), + ...Object.values(accessibilityDefects), +]); diff --git a/tests/knownDefects/runtime.spec.js b/tests/knownDefects/runtime.spec.js new file mode 100644 index 0000000..a48c6fa --- /dev/null +++ b/tests/knownDefects/runtime.spec.js @@ -0,0 +1,298 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { parseGrid } from '../../buildGrid.js'; +import { Tree } from '../../tree.js'; +import { renderFreshQuest, SIMPLE_SURVEY } from '../helpers/questRuntime.js'; +import { runtimeDefects } from './registry.js'; + +const expectedCovidGridResponseIds = [ + 'D_488415137', 'D_167695804', 'D_730334054', 'D_215996690', + 'D_462737492', 'D_469675296', 'D_962475128', 'D_989576239', + 'D_338613869', 'D_126794793', 'D_218793117', 'D_524096053', + 'D_814101706', 'D_635026188', 'D_238135048', 'D_632714520', +].flatMap((id) => [`${id}_0`, `${id}_1`]); + +// Reviewed against the locked English and Spanish COVID Markdown. Both files +// contain this identical, truncated display condition for D_114280729. +const MALFORMED_COVID_GRID_COMPLEMENT = 'someSelected("D_488415137_0","D_488415137_1","D_167695804_0","D_167695804_1","D_730334054_0","D_730334054_1","D_215996690_0","D_215996690_1","D_462737492_0","D_462737492_1","D_469675296_0","D_469675296_1","D_962475128_0","D_962475128_1","D_989576239_0","D_989576239_1","D_338613869_0","D_338613869_1","D_126794793_0","D_126794793_1","D_218793117_0","D_218793117_1","D_524096053_0","SRVCOV_COV19C1_V1R0_1,1","D_814101706_0","D_814101706_1","D_635026188_0","D_238135048_0","D_238135048_1","D_632714520_0","D_632714520_1'; + +function buildBranchedTree() { + const tree = new Tree(); + tree.add(['Q1', 'Q2', 'Q3']); + tree.next(); + tree.add('Q1A'); + tree.next(); + tree.add('Q1B'); + tree.next(); + return tree; +} + +async function loadStateManager(initialState = {}) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = {}; + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + const appState = stateModule.getStateManager(); + appState.loadInitialSurveyState(initialState); + appState.setQuestionProcessor({ + findQuestion: () => ({ question: null }), + findGridRadioCheckboxEle: () => null, + }); + return appState; +} + +async function loadMathWithState(initialState = {}) { + const appState = await loadStateManager(initialState); + const mathModule = await import('../../customMathJSImplementation.js'); + mathModule.customMathJSFunctions.appState = appState; + return mathModule.customMathJSFunctions; +} + +async function loadEvaluator(state = {}, previousResults = {}) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = previousResults; + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + stateModule.getStateManager().loadInitialSurveyState(state); + return (await import('../../evaluateConditions.js')).evaluateCondition; +} + +async function loadQuestionProcessor(markdown) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + const i18n = (await import('../../i18n/en.js')).default; + questionnaire.moduleParams.i18n = i18n; + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = {}; + questionnaire.moduleParams.asyncQuestionsMap = {}; + questionnaire.moduleParams.renderFullQuestionList = true; + questionnaire.moduleParams.isRenderer = true; + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + const appState = stateModule.getStateManager(); + appState.loadInitialSurveyState({}); + + const { initializeCustomMathJSFunctions } = await import('../../customMathJSImplementation.js'); + initializeCustomMathJSFunctions(); + const { QuestionProcessor } = await import('../../questionProcessor.js'); + const processor = new QuestionProcessor(markdown, { + current_date: new Date('2026-03-15T12:00:00Z'), + current_day: 15, + current_month: 3, + current_month_str: 2, + current_year: 2026, + quest_format_date: '2026-3-15', + }, i18n); + appState.setQuestionProcessor(processor); + + return { processor, errorLogger: questionnaire.moduleParams.errorLogger }; +} + +async function answerAndAdvance(quest) { + quest.root.querySelector('#Q1_1').click(); + quest.root.querySelector('#Q1 .next').click(); + await vi.waitFor(() => expect(quest.store).toHaveBeenCalled()); +} + +describe('characterized Quest runtime defects', () => { + beforeEach(() => vi.useRealTimers()); + + it.fails(`${runtimeDefects.treeDepthFirst.localDefectId}: walks all root branches depth-first`, () => { + const tree = buildBranchedTree(); + expect(tree.next().value.value).toBe('Q2'); + expect(tree.next().value.value).toBe('Q3'); + expect(tree.next()).toEqual({ done: true, value: undefined }); + }); + + it.fails(`${runtimeDefects.treePrune.localDefectId}: prunes the current branch`, () => { + const tree = new Tree(); + tree.add(['Q1', 'Q2']); + tree.next(); + tree.add('Q1A'); + tree.next(); + tree.prune(); + expect(tree.currentNode.value).toBe('Q1'); + expect(tree.currentNode.children).toEqual([]); + expect(tree.rootNode.children.map(({ value }) => value)).toEqual(['Q1', 'Q2']); + }); + + it.fails(`${runtimeDefects.treeHasNext.localDefectId}: reports lookahead without mutation`, () => { + const tree = new Tree(); + tree.add('Q1'); + expect(tree.hasNext()).toBe(true); + expect(tree.currentNode).toBe(tree.rootNode); + }); + + it.fails(`${runtimeDefects.gridRowCondition.localDefectId}: encodes a row condition once`, () => { + const html = parseGrid( + '|grid?|id=GRID|Shared|[ROW,displayif=equals(SHOW,1)]Conditional row;|(1:Yes)|', + '
', + ); + const template = document.createElement('template'); + template.innerHTML = html; + expect(decodeURIComponent(template.content.querySelector('[data-displayif]').dataset.displayif)).toBe('equals(SHOW,1)'); + }); + + it.fails(`${runtimeDefects.mathDotValue.localDefectId}: resolves a dot-notation leaf`, async () => { + const fn = await loadMathWithState({ OBJECT: { NESTED: 'value' } }); + expect(fn.getKeyedValue('OBJECT.NESTED')).toBe('value'); + }); + + it.fails(`${runtimeDefects.mathDotExists.localDefectId}: recognizes an existing dot-notation leaf`, async () => { + const fn = await loadMathWithState({ OBJECT: { NESTED: 'value' } }); + expect(fn.exists('OBJECT.NESTED')).toBe(true); + }); + + it.fails(`${runtimeDefects.mathMonthRange.localDefectId}: rejects month 12`, async () => { + const fn = await loadMathWithState(); + expect(() => fn.dateCompare(12, 2026, 1, 2027)).toThrow('months need to be'); + }); + + it.fails(`${runtimeDefects.legacyQuotedString.localDefectId}: preserves quoted fallback literals`, async () => { + const evaluateCondition = await loadEvaluator({}, { PRIOR: 'yes' }); + expect(evaluateCondition('equals(PRIOR,"yes")')).toBe(true); + }); + + it.fails(`${runtimeDefects.corpusMalformedCondition.localDefectId}: rejects a truncated function expression`, async () => { + const evaluateCondition = await loadEvaluator(); + expect(evaluateCondition('someSelected("D_632714520_1')).toBe(false); + }); + + it.fails.each(['English', 'Spanish'])(`${runtimeDefects.corpusMalformedCondition.localDefectId}: %s COVID Markdown keeps the complete grid complement`, async () => { + const authoredResponseIds = [...MALFORMED_COVID_GRID_COMPLEMENT.matchAll(/"([^"]+)"/g)] + .map(([, responseId]) => responseId); + + expect(authoredResponseIds).toEqual(expectedCovidGridResponseIds); + + const evaluateCondition = await loadEvaluator(); + expect(evaluateCondition(MALFORMED_COVID_GRID_COMPLEMENT)).toBe(false); + }); + + it.fails.each(['non200', 'reject'])( + `${runtimeDefects.storeRollback.localDefectId}: restores the snapshot after a %s store result`, + async (storeMode) => { + const quest = await renderFreshQuest({ storeMode }); + await answerAndAdvance(quest); + await vi.waitFor(() => expect(quest.root.querySelector('form.active')?.id).toBe('Q1')); + expect(quest.state.getSurveyState()).not.toHaveProperty('Q1'); + }, + ); + + it.fails(`${runtimeDefects.sequentialHostCallbacks.localDefectId}: rebinds second-render callbacks`, async () => { + const first = await renderFreshQuest(); + const secondStore = vi.fn(async () => ({ code: 200 })); + document.body.innerHTML = '
'; + await first.transform.render({ + activate: true, + text: SIMPLE_SURVEY.replace('TEST_MODULE', 'SECOND_MODULE'), + store: secondStore, + errorLogger: () => {}, + }, 'secondRoot'); + document.querySelector('#Q1_1').click(); + document.querySelector('#Q1 .next').click(); + await vi.waitFor(() => expect(secondStore).toHaveBeenCalled()); + }); + + it.fails(`${runtimeDefects.finalCompoundResponseRemoval.localDefectId}: removes the question after its final compound response is cleared`, async () => { + const appState = await loadStateManager(); + appState.setResponse('Q1', 'ONLY', 2, 'selected'); + + appState.removeResponseItem('Q1', 'ONLY', 2); + + expect(appState.getActiveQuestionState()).not.toHaveProperty('Q1'); + expect(appState.getResponseToQuestionMapping()).not.toHaveProperty('ONLY.Q1'); + expect(appState.getCache()).not.toHaveProperty('ONLY.Q1'); + }); + + it.fails(`${runtimeDefects.clearedRestoredResponseLookup.localDefectId}: does not return a restored scalar after it is cleared`, async () => { + const appState = await loadStateManager({ Q1: 'restored' }); + appState.setActiveQuestionState('Q1'); + + appState.setResponse('Q1', 'Q1', 1, ''); + + expect(appState.findResponseValue('Q1')).toBeUndefined(); + }); + + it.fails(`${runtimeDefects.unsyncedArrayResponseLookup.localDefectId}: returns a live checkbox array before storage`, async () => { + const appState = await loadStateManager(); + appState.setResponse('Q1', 'CHECKBOX', 2, ['one', 'two']); + + expect(appState.findResponseValue('CHECKBOX', 'Q1')).toEqual(['one', 'two']); + }); + + it.fails(`${runtimeDefects.malformedLoopContinuation.localDefectId}: rejects a malformed loop continuation without throwing`, async () => { + const { processor, errorLogger } = await loadQuestionProcessor(` + {"name":"MALFORMED_CONTINUE"} + [Q1] First. + [END,end] Done. + `); + let result; + + expect(() => { + result = processor.findQuestion('_CONTINUE_BAD'); + }).not.toThrow(); + expect(result).toEqual({ question: null, index: -1 }); + expect(errorLogger.mock.calls.some( + ([message]) => String(message).includes('loop index not found'), + )).toBe(true); + }); + + it.fails(`${runtimeDefects.currentQuestionUpperBoundary.localDefectId}: returns null when the current index equals the question count`, async () => { + const { processor, errorLogger } = await loadQuestionProcessor(` + {"name":"UPPER_BOUNDARY"} + [Q1] First. + [END,end] Done. + `); + processor.currentQuestionIndex = processor.questions.length; + + expect(processor.getCurrentQuestion()).toBeNull(); + expect(errorLogger).toHaveBeenCalledWith(expect.stringContaining('index out of range')); + }); + + it.fails(`${runtimeDefects.missingConfirmationTarget.localDefectId}: ignores an invalid confirmation reference without throwing`, async () => { + const { processor } = await loadQuestionProcessor(` + {"name":"MISSING_CONFIRMATION"} + [Q1] Confirm + [END,end] Done. + `); + let question; + + expect(() => { + question = processor.processQuestion(0); + }).not.toThrow(); + expect(question.querySelector('#COPY').hasAttribute('data-confirm')).toBe(false); + }); + + it.fails(`${runtimeDefects.missingQuestionId.localDefectId}: returns the documented not-found result for an absent question ID`, async () => { + const { processor, errorLogger } = await loadQuestionProcessor(` + {"name":"MISSING_ID"} + [Q1] First. + [END,end] Done. + `); + let result; + + expect(() => { + result = processor.findQuestion(); + }).not.toThrow(); + expect(result).toEqual({ question: null, index: -1 }); + expect(errorLogger.mock.calls.some( + ([message]) => String(message).includes('no questionID provided'), + )).toBe(true); + }); + + it.fails(`${runtimeDefects.explicitCombinedChoiceName.localDefectId}: preserves an authored combined-choice name exactly`, async () => { + const { processor } = await loadQuestionProcessor(` + {"name":"EXPLICIT_COMBINED_NAME"} + [Q1?] Other response. + [other|id=EXPLICIT_CHOICE name=EXPLICIT_NAME] Explain -> END + [END,end] Done. + `); + + const choice = processor.findQuestion('Q1').question.querySelector('#EXPLICIT_CHOICE'); + expect(choice.name).toBe('EXPLICIT_NAME'); + }); +}); diff --git a/tests/knownDefects/vitest.config.js b/tests/knownDefects/vitest.config.js new file mode 100644 index 0000000..477e849 --- /dev/null +++ b/tests/knownDefects/vitest.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vitest/config'; +import { questDependencyResolver } from '../config/moduleResolution.js'; + +export default defineConfig({ + plugins: [questDependencyResolver], + test: { + environment: 'jsdom', + environmentOptions: { + jsdom: { url: 'https://connect.test/' }, + }, + setupFiles: ['./tests/setup/jsdom.js'], + include: ['./tests/knownDefects/**/*.spec.js'], + clearMocks: true, + restoreMocks: true, + mockReset: true, + testTimeout: 15_000, + hookTimeout: 15_000, + }, +}); diff --git a/tests/quality/scripts/checkTestOnlyScope.mjs b/tests/quality/scripts/checkTestOnlyScope.mjs new file mode 100644 index 0000000..f863e0a --- /dev/null +++ b/tests/quality/scripts/checkTestOnlyScope.mjs @@ -0,0 +1,155 @@ +#!/usr/bin/env node + +import { execFileSync, spawnSync } from 'node:child_process'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +export const BOOTSTRAP_BASE_SHA = '982f24ddc133d2e0153b792521da0af4c769b0b9'; + +const SCRIPT_PATH = fileURLToPath(import.meta.url); +const REPOSITORY_ROOT = path.resolve(path.dirname(SCRIPT_PATH), '..', '..', '..'); +const ROOT_CONFIG_FILES = new Set([ + 'playwright.config.js', + 'vite.config.js', + 'vitest.config.js', +]); +const ROOT_METADATA_FILES = new Set([ + '.gitignore', + '.node-version', + '.nvmrc', + 'README.md', +]); + +export function scopeDecision(repositoryPath) { + if (!isSafeRepositoryPath(repositoryPath)) { + return { allowed: false, reason: 'path is not a safe normalized repository-relative path' }; + } + + if (repositoryPath.startsWith('i18n/')) { + return { allowed: false, reason: 'production i18n source is outside this test-only pull request' }; + } + + if (!repositoryPath.includes('/') && /\.(?:css|html)$/i.test(repositoryPath)) { + return { allowed: false, reason: 'root production CSS/HTML is outside this test-only pull request' }; + } + + if (!repositoryPath.includes('/') && repositoryPath.endsWith('.js') && !ROOT_CONFIG_FILES.has(repositoryPath)) { + return { allowed: false, reason: 'root production JavaScript is outside this test-only pull request' }; + } + + if (repositoryPath.startsWith('tests/')) return { allowed: true }; + if (repositoryPath.startsWith('.github/')) return { allowed: true }; + if (repositoryPath.startsWith('docs/')) return { allowed: true }; + if (ROOT_METADATA_FILES.has(repositoryPath)) return { allowed: true }; + if (ROOT_CONFIG_FILES.has(repositoryPath)) return { allowed: true }; + if (/^package[^/]*\.json$/.test(repositoryPath)) return { allowed: true }; + + return { allowed: false, reason: 'path is not in the bootstrap test-infrastructure allowlist' }; +} + +export function checkTestOnlyScope({ + repositoryRoot = REPOSITORY_ROOT, + baseRevision = BOOTSTRAP_BASE_SHA, + headRevision = 'HEAD', +} = {}) { + const baseSha = resolveCommit(repositoryRoot, baseRevision, 'bootstrap base'); + const headSha = resolveCommit(repositoryRoot, headRevision, 'head'); + assertAncestor(repositoryRoot, baseSha, headSha); + + const changedPaths = changedPathsBetween(repositoryRoot, baseSha, headSha); + const violations = changedPaths + .map((changedPath) => ({ path: changedPath, ...scopeDecision(changedPath) })) + .filter(({ allowed }) => !allowed) + .sort((left, right) => comparePaths(left.path, right.path)); + + if (violations.length > 0) { + throw new Error([ + 'Bootstrap test-only scope gate failed.', + `Only reviewed test infrastructure may differ from ${baseSha}.`, + ...violations.map(({ path: changedPath, reason }) => `- ${changedPath}: ${reason}`), + ].join('\n')); + } + + return { baseSha, headSha, changedPaths }; +} + +export function parseScopeCliArgs(argv) { + const options = {}; + for (let index = 0; index < argv.length; index += 1) { + const argument = argv[index]; + if (argument !== '--head') throw new Error(`Unknown test-only scope argument: ${argument}`); + const headRevision = argv[index + 1]; + if (!headRevision || headRevision.startsWith('--')) { + throw new Error('--head requires an exact revision argument.'); + } + options.headRevision = headRevision; + index += 1; + } + return options; +} + +function resolveCommit(repositoryRoot, revision, label) { + try { + const sha = execFileSync( + 'git', + ['-C', repositoryRoot, 'rev-parse', '--verify', `${revision}^{commit}`], + { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }, + ).trim(); + if (!/^[0-9a-f]{40}$/.test(sha)) throw new Error(`resolved unsupported object ID ${sha}`); + return sha; + } catch (error) { + const detail = error.stderr?.toString().trim() || error.message; + throw new Error(`Unable to resolve ${label} revision ${revision}: ${detail}`); + } +} + +function assertAncestor(repositoryRoot, baseSha, headSha) { + const result = spawnSync( + 'git', + ['-C', repositoryRoot, 'merge-base', '--is-ancestor', baseSha, headSha], + { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }, + ); + if (result.error) throw result.error; + if (result.status === 1) { + throw new Error(`Bootstrap base ${baseSha} is not an ancestor of head ${headSha}.`); + } + if (result.status !== 0) { + throw new Error(`Unable to verify bootstrap ancestry: ${result.stderr.trim() || `git exited ${result.status}`}`); + } +} + +function changedPathsBetween(repositoryRoot, baseSha, headSha) { + const output = execFileSync( + 'git', + ['-C', repositoryRoot, 'diff', '--name-only', '--no-renames', '-z', `${baseSha}...${headSha}`, '--'], + { encoding: 'buffer', stdio: ['ignore', 'pipe', 'pipe'] }, + ); + const decoded = new TextDecoder('utf-8', { fatal: true }).decode(output); + return decoded.split('\0').filter(Boolean).sort(comparePaths); +} + +function comparePaths(left, right) { + if (left < right) return -1; + if (left > right) return 1; + return 0; +} + +function isSafeRepositoryPath(repositoryPath) { + if (typeof repositoryPath !== 'string' || repositoryPath.length === 0) return false; + if (repositoryPath.startsWith('/') || repositoryPath.includes('\\')) return false; + if (/[\u0000-\u001f\u007f]/.test(repositoryPath)) return false; + const segments = repositoryPath.split('/'); + return segments.every((segment) => segment.length > 0 && segment !== '.' && segment !== '..'); +} + +if (process.argv[1] && path.resolve(process.argv[1]) === SCRIPT_PATH) { + try { + const result = checkTestOnlyScope(parseScopeCliArgs(process.argv.slice(2))); + console.log( + `Bootstrap test-only scope passed: ${result.changedPaths.length} changed path(s) from ${result.baseSha} to ${result.headSha}.`, + ); + } catch (error) { + console.error(error.message); + process.exitCode = 1; + } +} diff --git a/tests/scripts/runKnownDefects.mjs b/tests/scripts/runKnownDefects.mjs new file mode 100644 index 0000000..64e2dfa --- /dev/null +++ b/tests/scripts/runKnownDefects.mjs @@ -0,0 +1,32 @@ +#!/usr/bin/env node + +import { spawnSync } from 'node:child_process'; +import { createRequire } from 'node:module'; + +const require = createRequire(import.meta.url); +const commands = [ + [require.resolve('vitest/vitest.mjs'), 'run', '--config', 'tests/knownDefects/vitest.config.js'], + [ + require.resolve('@playwright/test/cli'), + 'test', + '--project=chromium-desktop', + '--project=chromium-windows-ua', + '--project=firefox-desktop', + '--project=webkit-desktop', + '--grep', + '@known-defect', + ], +]; + +let failed = false; +for (const [entrypoint, ...args] of commands) { + const result = spawnSync(process.execPath, [entrypoint, ...args], { + cwd: process.cwd(), + env: process.env, + stdio: 'inherit', + }); + if (result.error) throw result.error; + if (result.status !== 0) failed = true; +} + +process.exitCode = failed ? 1 : 0; diff --git a/tests/setup/jsdom.js b/tests/setup/jsdom.js new file mode 100644 index 0000000..4b5b2f9 --- /dev/null +++ b/tests/setup/jsdom.js @@ -0,0 +1,115 @@ +import { afterEach, beforeEach, expect, vi } from 'vitest'; + +let unexpectedNetworkAttempts = []; + +function networkTarget(input) { + if (typeof input === 'string') return input; + if (input instanceof URL) return input.href; + return input?.url ?? String(input); +} + +function installOfflineNetworkBoundary() { + unexpectedNetworkAttempts = []; + + const denyFetch = vi.fn(async (input) => { + const target = networkTarget(input); + unexpectedNetworkAttempts.push({ transport: 'fetch', target }); + throw new Error(`Unexpected jsdom fetch blocked by the offline test boundary: ${target}`); + }); + Object.defineProperty(denyFetch, 'questDenyByDefault', { value: true }); + vi.stubGlobal('fetch', denyFetch); + + class OfflineXMLHttpRequest { + static questDenyByDefault = true; + + open(method, url) { + this.method = method; + this.url = networkTarget(url); + } + + send() { + const target = this.url ?? ''; + unexpectedNetworkAttempts.push({ + transport: 'XMLHttpRequest', + method: this.method ?? null, + target, + }); + throw new Error(`Unexpected jsdom XMLHttpRequest blocked by the offline test boundary: ${target}`); + } + + abort() {} + setRequestHeader() {} + } + + vi.stubGlobal('XMLHttpRequest', OfflineXMLHttpRequest); +} + +class BootstrapComponentStub { + static instances = new WeakMap(); + + constructor(element) { + this._element = element; + this.constructor.instances.set(element, this); + } + + static getInstance(element) { + return this.instances.get(element) ?? null; + } + + show() { + this._element?.classList.add('show'); + this._element?.dispatchEvent(new Event('shown.bs.modal')); + } + + hide() { + this._element?.classList.remove('show'); + this._element?.dispatchEvent(new Event('hidden.bs.modal')); + } + + dispose() { + this.constructor.instances.delete(this._element); + } +} + +beforeEach(() => { + installOfflineNetworkBoundary(); + document.documentElement.lang = 'en'; + document.body.innerHTML = ''; + + globalThis.bootstrap = { + Modal: class ModalStub extends BootstrapComponentStub {}, + Popover: class PopoverStub extends BootstrapComponentStub {}, + }; + + window.matchMedia = vi.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: vi.fn(), + removeListener: vi.fn(), + addEventListener: vi.fn(), + removeEventListener: vi.fn(), + dispatchEvent: vi.fn(), + })); + + Element.prototype.scrollIntoView = vi.fn(); + URL.createObjectURL = vi.fn(() => 'blob:quest-test'); + URL.revokeObjectURL = vi.fn(); + + if (!globalThis.CSS) globalThis.CSS = {}; + if (!globalThis.CSS.escape) { + globalThis.CSS.escape = (value) => String(value).replace(/[^a-zA-Z0-9_-]/g, (match) => `\\${match}`); + } +}); + +afterEach(() => { + expect( + unexpectedNetworkAttempts, + 'jsdom attempted network access without an explicit per-test host-boundary stub', + ).toEqual([]); + vi.clearAllTimers(); + vi.useRealTimers(); + vi.unstubAllGlobals(); + document.body.innerHTML = ''; + delete globalThis.bootstrap; +}); diff --git a/tests/unit/buildGrid.spec.js b/tests/unit/buildGrid.spec.js new file mode 100644 index 0000000..dc6f8cd --- /dev/null +++ b/tests/unit/buildGrid.spec.js @@ -0,0 +1,65 @@ +import { describe, expect, it } from 'vitest'; +import { parseGrid } from '../../buildGrid.js'; + +const buttons = '
'; + +describe('parseGrid', () => { + it('renders a semantic radio grid with encoded conditions and piped values', () => { + const html = parseGrid( + '|grid?|id=GRID displayif=equals(ELIGIBLE,1)|Shared {$name} %displayif=equals(A,1)%conditional%|[ROW1]First {$u:firstName};[ROW2,displayif=equals(SHOW,1)]Second;|(1:Yes)(0:No)|', + buttons, + ); + const template = document.createElement('template'); + template.innerHTML = html; + const form = template.content.querySelector('form'); + + expect(form.id).toBe('GRID'); + expect(form.getAttribute('softedit')).toBe('true'); + expect(form.dataset.grid).toBe('true'); + expect(decodeURIComponent(form.getAttribute('displayif'))).toBe('equals(ELIGIBLE,1)'); + expect(form.querySelectorAll('tbody tr')).toHaveLength(2); + expect(form.querySelectorAll('input[type="radio"]')).toHaveLength(4); + expect(form.querySelector('#ROW1_0').value).toBe('1'); + expect(form.querySelector('span[data-gridreplace="name"]')).not.toBeNull(); + expect(form.querySelector('span[data-gridreplace="firstName"]')).not.toBeNull(); + expect(form.querySelector('.grid-displayif')).not.toBeNull(); + expect(form.querySelector('[data-displayif]')).not.toBeNull(); + expect(form.querySelector('.question-buttons')).not.toBeNull(); + }); + + it('renders checkbox grids and hard-edit prompts', () => { + const html = parseGrid( + '|grid!|id=CHECKGRID|Choose all|[ROW]A row;|[A:Alpha][B:Beta]|', + buttons, + ); + const template = document.createElement('template'); + template.innerHTML = html; + const form = template.content.querySelector('form'); + + expect(form.getAttribute('hardedit')).toBe('true'); + expect(form.getAttribute('softedit')).toBe('false'); + expect(form.querySelectorAll('input[type="checkbox"]')).toHaveLength(2); + expect(form.querySelectorAll('th[scope="col"]')).toHaveLength(2); + expect(form.querySelector('th[scope="row"]').textContent).toContain('A row'); + }); + + it('uses a plain prompt when no edit marker is authored', () => { + const html = parseGrid('|grid|id=PLAIN|Question|[ROW]Text;|(1:One)|', buttons); + const template = document.createElement('template'); + template.innerHTML = html; + const form = template.content.querySelector('form'); + + expect(form.getAttribute('hardedit')).toBe('false'); + expect(form.getAttribute('softedit')).toBe('false'); + expect(form.querySelector('thead [data-header="One"]')).not.toBeNull(); + }); + + it('makes evaluated piped values distinguishable from response lookups', () => { + const html = parseGrid('|grid|id=PIPED|{$e:1 + 1}|[ROW]{$answer};|(1:One)|', buttons); + const template = document.createElement('template'); + template.innerHTML = html; + + expect(template.content.querySelector('[data-gridreplacetype="eval"]')).not.toBeNull(); + expect(template.content.querySelector('[data-gridreplacetype="_val"]')).not.toBeNull(); + }); +}); diff --git a/tests/unit/customMath.spec.js b/tests/unit/customMath.spec.js new file mode 100644 index 0000000..bb350e7 --- /dev/null +++ b/tests/unit/customMath.spec.js @@ -0,0 +1,242 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +async function loadMathWithState(initialState = {}) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = {}; + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + const appState = stateModule.getStateManager(); + appState.loadInitialSurveyState(initialState); + appState.setQuestionProcessor({ + findQuestion: () => ({ question: null }), + findGridRadioCheckboxEle: () => null, + }); + + const mathModule = await import('../../customMathJSImplementation.js'); + mathModule.customMathJSFunctions.appState = appState; + return { ...mathModule, appState, moduleParams: questionnaire.moduleParams }; +} + +describe('Quest MathJS extensions', () => { + beforeEach(() => { + Object.defineProperty(navigator, 'language', { configurable: true, value: 'en-US' }); + }); + + it('normalizes, adds, subtracts, and compares year-month values at year boundaries', async () => { + const { YearMonth } = await loadMathWithState(); + const value = new YearMonth('2025-12'); + + expect(value.toString()).toBe('2025-12'); + expect(new YearMonth(value).toString()).toBe('2025-12'); + expect(value.add(1)).toBe('2026-01'); + expect(new YearMonth('2025-03').add(1)).toBe('2025-04'); + expect(new YearMonth('2026-01').subtract(1)).toBe('2025-12'); + expect(new YearMonth('2026-03').subtract(1)).toBe('2026-02'); + expect(new YearMonth('2026-03').subMonth(new YearMonth('2025-11'))).toBe(4); + expect(() => new YearMonth('03/2026')).toThrow('Invalid YearMonth format'); + }); + + it('looks up scalar, array, object, nested, numeric, and missing values', async () => { + const { customMathJSFunctions: fn } = await loadMathWithState({ + SCALAR: 'yes', + EMPTY: '', + CHECKS: ['1', '2'], + OBJECT: { NESTED: 'value' }, + }); + + expect(fn.exists('SCALAR')).toBe(true); + expect(fn.exists('EMPTY')).toBe(false); + expect(fn.exists(null)).toBe(false); + expect(fn.exists('CHECKS')).toBe(true); + expect(fn.exists('MISSING')).toBe(false); + expect(fn.exists(0)).toBe(true); + expect(fn.getKeyedValue('not a response sentence.')).toBeUndefined(); + expect(() => fn.getKeyedValue('MISSING.LEAF')).toThrow(TypeError); + expect(fn.getKeyedValue('OBJECT.MISSING.DEEP')).toBeUndefined(); + expect(fn._value(125)).toBe(125); + expect(fn._value('MISSING')).toBeNull(); + }); + + it('evaluates existence composition, equality, sets, ranges, and defaults', async () => { + const { customMathJSFunctions: fn } = await loadMathWithState({ + ANSWER: '2', + CHECKS: ['1', '3'], + CONCEPTS: '123456789,987654321', + COUNT: '5', + }); + + expect(fn.doesNotExist('MISSING')).toBe(true); + expect(fn.noneExist('A', 'B')).toBe(true); + expect(fn.someExist('A', 'ANSWER')).toBe(true); + expect(fn.allExist('ANSWER', 'CHECKS')).toBe(true); + expect(fn.valueEquals('ANSWER', 2)).toBe(true); + expect(fn.valueEquals('MISSING', 2)).toBe(false); + expect(fn.valueIsOneOf('CHECKS', 3, 9)).toBe(true); + expect(fn.valueIsOneOf('MISSING', 3, 9)).toBe(false); + expect(fn.valueIsOneOf('CONCEPTS', '987654321')).toBe(true); + expect(fn.valueIsBetween(1, 10, 'COUNT')).toBe(true); + expect(() => fn.valueIsBetween(1, 10, 'MISSING', 'COUNT')).toThrow('Key(s) must be strings'); + expect(fn.valueIsBetween(6, 10, 'COUNT')).toBe(false); + expect(fn.valueOrDefault('MISSING', 'ANSWER', 99)).toBe('2'); + expect(fn.valueLength('ANSWER')).toBe(1); + expect(fn.valueLength('MISSING')).toBe(false); + expect(fn.valueIsBetween(undefined, 10, 'COUNT')).toBe(false); + expect(fn.valueIsBetween(1, 10, 'MISSING')).toBe(false); + }); + + it('distinguishes MathJS scalar equality from legacy checkbox-membership equality', async () => { + const { + customMathJSFunctions: fn, + initializeCustomMathJSFunctions, + math, + } = await loadMathWithState({ CHECKS: ['1', '3'] }); + initializeCustomMathJSFunctions(); + const { evaluateCondition } = await import('../../evaluateConditions.js'); + + // Quoted IDs stay in the MathJS path and use scalar coercion. Legacy + // authored expressions use a bare response ID. MathJS rejects that symbol + // and Quest's fallback evaluator correctly treats equals as membership. + expect(fn.valueEquals('CHECKS', 1)).toBe(false); + expect(fn.equals('CHECKS', 3)).toBe(false); + expect(math.evaluate('equals("CHECKS", 1)')).toBe(false); + expect(evaluateCondition('equals(CHECKS,1)')).toBe(true); + expect(evaluateCondition('equals(CHECKS,2)')).toBe(false); + expect(fn.valueIsOneOf('CHECKS', 1, 9)).toBe(true); + }); + + it('unwraps legacy combo objects and reports response types that existence cannot interpret', async () => { + vi.spyOn(console, 'error').mockImplementation(() => {}); + const { customMathJSFunctions: fn, moduleParams } = await loadMathWithState({ + COMBO: { COMBO: '2', OTHER: 'detail' }, + BOOLEAN: true, + }); + + expect(fn.valueEquals('COMBO', 2)).toBe(true); + expect(fn.valueIsOneOf('COMBO', 1, 2)).toBe(true); + expect(fn.exists('BOOLEAN')).toBe(false); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('unhandled case in EXISTS')); + expect(fn.getKeyedValue('NO_DOT')).toBeUndefined(); + }); + + it('unwraps combo-shaped values before equality and one-of comparisons', async () => { + const { customMathJSFunctions: fn } = await loadMathWithState(); + fn.appState = { + findResponseValue: () => ({ COMBO: '2', OTHER: 'detail' }), + }; + + expect(fn.equals('COMBO', 2)).toBe(true); + expect(fn.valueIsOneOf('COMBO', 2, 3)).toBe(true); + expect(fn.valueLength('COMBO')).toBe(-1); + }); + + it('handles fixed arithmetic/date helpers and invalid selections safely', async () => { + const { customMathJSFunctions: fn } = await loadMathWithState(); + + expect(fn.dateCompare(0, 2026, 1, 2026)).toBe(-1); + expect(fn.dateCompare(1, 2026, 1, 2026)).toBe(0); + expect(fn.dateCompare(2, 2026, 1, 2026)).toBe(1); + expect(fn.yearMonth('2026-04').toString()).toBe('2026-04'); + expect(fn.yearMonth('not-a-month')).toBe(false); + expect(fn.isSelected('ROW_VALUE_0')).toBe(false); + expect(fn.someSelected('ROW_VALUE_0')).toBe(false); + expect(fn.noneSelected('ROW_VALUE_0')).toBe(true); + expect(fn.valueIsBetween(1, 10, 'not-numeric')).toBe(false); + expect(() => fn.dateCompare(1, 'bad-year', 1, 2026)).toThrow('years need to be numeric'); + }); + + it('finds selected grid cells and resolves year-month values stored in state', async () => { + const { customMathJSFunctions: fn, appState } = await loadMathWithState({ + ROW_VALUE: '2', + STORED_MONTH: '2026-07', + }); + appState.setQuestionProcessor({ + findGridRadioCheckboxEle: (id) => id === 'ROW_VALUE_1' ? '2' : null, + findQuestion: () => ({ question: null }), + }); + + expect(fn.isSelected('ROW_VALUE_1')).toBe(true); + expect(fn.isSelected('ROW_VALUE_2')).toBe(false); + expect(fn.someSelected('ROW_VALUE_2', 'ROW_VALUE_1')).toBe(true); + expect(fn.noneSelected('ROW_VALUE_2')).toBe(true); + expect(fn.yearMonth('STORED_MONTH').toString()).toBe('2026-07'); + + appState.setQuestionProcessor({ + findGridRadioCheckboxEle: () => '2', + findQuestion: () => ({ question: null }), + }); + expect(fn.isSelected('INVALID_ID')).toBe(false); + appState.loadInitialSurveyState({}); + expect(fn.isSelected('ROW_VALUE_1')).toBe(false); + }); + + it('counts nested checkbox groups and joins conditionally existing display values', async () => { + const { customMathJSFunctions: fn, appState, initializeCustomMathJSFunctions } = await loadMathWithState({ + Q: { GROUP: ['1', '2'] }, + A: 'yes', + }); + const form = document.createElement('form'); + form.innerHTML = ` + + + `; + appState.setQuestionProcessor({ + findQuestion: () => ({ question: form }), + findGridRadioCheckboxEle: () => null, + }); + initializeCustomMathJSFunctions(); + + expect(fn.selectionCount('Q:GROUP')).toBe(2); + expect(fn.existingValues('displayList(exists("A"),"Alpha",exists("B"),"Beta")')).toBe('Alpha'); + expect(fn.existingValues('displayList(exists("A"),"Alpha",exists("Q"),"Questions",sep=" / ")')).toBe('Alpha / Questions'); + expect(fn.existingValues()).toBe(''); + + appState.setQuestionProcessor({ + findQuestion: () => ({ question: null }), + findGridRadioCheckboxEle: () => null, + }); + expect(fn.selectionCount('Q:GROUP')).toBe(2); + }); + + it('counts regular and reset checkbox selections from processed question HTML', async () => { + const { customMathJSFunctions: fn, appState } = await loadMathWithState({ Q: ['1', '99'] }); + const form = document.createElement('form'); + form.innerHTML = ` + + + `; + appState.setQuestionProcessor({ + findQuestion: () => ({ question: form }), + findGridRadioCheckboxEle: () => null, + }); + + expect(fn.selectionCount('Q')).toBe(0); + expect(fn.selectionCount('Q', true)).toBe(2); + expect(fn.selectionCount('MISSING')).toBe(0); + + fn.appState.findResponseValue = (id) => id === 'SCALAR' ? 'one' : undefined; + expect(fn.selectionCount('SCALAR')).toBe(0); + }); + + it('registers custom functions at the top level for authored MathJS expressions', async () => { + const { initializeCustomMathJSFunctions, math, customMathJSFunctions: fn } = await loadMathWithState({ ANSWER: '1' }); + initializeCustomMathJSFunctions(); + + expect(math.evaluate('exists("ANSWER")')).toBe(true); + expect(math.evaluate('valueIsOneOf("ANSWER", 1, 2)')).toBe(true); + expect(math.evaluate('yearMonth("2025-12") + 1')).toBe('2026-01'); + expect(fn.add(1, new fn.YearMonth('2025-12'))).toBe('2026-01'); + expect(fn.add(1, 2)).toBe(3); + expect(fn.add('1.5', '2.5')).toBe(4); + expect(fn.add(true, '2')).toBeNaN(); + expect(fn.add({}, {})).toBeNaN(); + expect(fn.subtract(new fn.YearMonth('2026-01'), 1)).toBe('2025-12'); + expect(fn.subtract(new fn.YearMonth('2026-03'), new fn.YearMonth('2025-12'))).toBe(3); + expect(fn.subtract(5, 2)).toBe(3); + expect(fn.subtract('5.5', '2.5')).toBe(3); + expect(fn.subtract(true, '2')).toBeNaN(); + expect(fn.subtract({}, {})).toBeNaN(); + }); +}); diff --git a/tests/unit/evaluateConditions.spec.js b/tests/unit/evaluateConditions.spec.js new file mode 100644 index 0000000..dc33ace --- /dev/null +++ b/tests/unit/evaluateConditions.spec.js @@ -0,0 +1,67 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +async function loadEvaluator(state = {}, previousResults = {}) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.previousResults = previousResults; + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(); + stateModule.getStateManager().loadInitialSurveyState(state); + const { evaluateCondition } = await import('../../evaluateConditions.js'); + return { evaluateCondition, moduleParams: questionnaire.moduleParams }; +} + +describe('condition evaluation', () => { + beforeEach(() => vi.useRealTimers()); + + it('uses MathJS for arithmetic, boolean expressions, and URI-encoded input', async () => { + const { evaluateCondition } = await loadEvaluator(); + + expect(evaluateCondition('2 + 3 * 4')).toBe(14); + expect(evaluateCondition('2%20%3C%203')).toBe(true); + expect(evaluateCondition('true and not false')).toBe(true); + }); + + it('falls back to legacy functions with state and previous-result values', async () => { + const { evaluateCondition } = await loadEvaluator( + { ANSWER: '2', CHECKS: ['1', '3'] }, + { PRIOR: '1' }, + ); + + expect(evaluateCondition('equals(ANSWER,2)')).toBe(true); + expect(evaluateCondition('doesNotEqual(ANSWER,3)')).toBe(true); + expect(evaluateCondition('equals(CHECKS,3)')).toBe(true); + expect(evaluateCondition('equals(PRIOR,1)')).toBe(true); + expect(evaluateCondition('greaterThan(ANSWER,1)')).toBe(true); + }); + + it('evaluates nested two-argument legacy functions inside out', async () => { + const { evaluateCondition } = await loadEvaluator({ A: '1', B: '0' }); + + expect(evaluateCondition('and(equals(A,1),doesNotEqual(B,1))')).toBe(true); + expect(evaluateCondition('or(equals(A,9),equals(B,0))')).toBe(true); + }); + + it('preserves legacy numeric, boolean, undefined, loop, and missing arguments', async () => { + const { evaluateCondition } = await loadEvaluator(); + + expect(evaluateCondition('equals(12,12)')).toBe(true); + expect(evaluateCondition('equals(true,true)')).toBe(false); + expect(evaluateCondition('equals(undefined,undefined)')).toBe(true); + expect(evaluateCondition('equals(#loop,#loop)')).toBe(true); + expect(evaluateCondition('equals(MISSING,undefined)')).toBe(false); + }); + + it('reports malformed fallback syntax with the original expression and stack', async () => { + const { evaluateCondition, moduleParams } = await loadEvaluator(); + + expect(() => evaluateCondition('notAFunction(A,1)')).toThrow(); + expect(moduleParams.errorLogger).toHaveBeenCalledWith( + 'Error in Displayif Function:', + 'notAFunction(A,1)', + expect.any(Array), + ); + }); +}); diff --git a/tests/unit/fetchCorpus.spec.js b/tests/unit/fetchCorpus.spec.js new file mode 100644 index 0000000..589ab89 --- /dev/null +++ b/tests/unit/fetchCorpus.spec.js @@ -0,0 +1,60 @@ +import { mkdtemp, readFile, rm } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; + +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { + downloadArchive, + questionnaireArchiveUrl, +} from '../corpus/scripts/fetchCorpus.mjs'; + +const temporaryDirectories = []; +const lock = { + repository: 'episphere/questionnaire', + commit: '7ae99a22af325cf0e14be047a7636462db9bfd50', +}; + +afterEach(async () => { + vi.unstubAllEnvs(); + await Promise.all(temporaryDirectories.splice(0).map((directory) => ( + rm(directory, { recursive: true, force: true }) + ))); +}); + +describe('questionnaire corpus download', () => { + it('uses the public archive URL for the exact locked commit', () => { + expect(questionnaireArchiveUrl(lock)).toBe( + 'https://github.com/episphere/questionnaire/archive/7ae99a22af325cf0e14be047a7636462db9bfd50.tar.gz', + ); + }); + + it('does not send credentials even when token-named variables exist', async () => { + vi.stubEnv('GITHUB_TOKEN', 'must-not-be-sent'); + vi.stubEnv('GH_TOKEN', 'must-not-be-sent-either'); + const directory = await mkdtemp(path.join(os.tmpdir(), 'quest-corpus-download-test-')); + temporaryDirectories.push(directory); + const archivePath = path.join(directory, 'questionnaire.tar.gz'); + const archiveBytes = new Uint8Array([31, 139, 8, 0]); + const fetchImpl = vi.fn(async () => ({ + ok: true, + status: 200, + arrayBuffer: async () => archiveBytes.buffer, + })); + + await downloadArchive(lock, archivePath, { fetchImpl }); + + expect(fetchImpl).toHaveBeenCalledWith(questionnaireArchiveUrl(lock), { + headers: { 'User-Agent': 'quest-corpus-fetcher' }, + redirect: 'follow', + }); + await expect(readFile(archivePath)).resolves.toEqual(Buffer.from(archiveBytes)); + }); + + it('reports the HTTP status for an unsuccessful public download', async () => { + const fetchImpl = vi.fn(async () => ({ ok: false, status: 503 })); + + await expect(downloadArchive(lock, '/unused/archive.tar.gz', { fetchImpl })) + .rejects.toThrow('Public GitHub archive fetch failed with HTTP 503.'); + }); +}); diff --git a/tests/unit/knownDefectRegistry.spec.js b/tests/unit/knownDefectRegistry.spec.js new file mode 100644 index 0000000..5ca709b --- /dev/null +++ b/tests/unit/knownDefectRegistry.spec.js @@ -0,0 +1,20 @@ +import { describe, expect, it } from 'vitest'; +import { allKnownDefects } from '../knownDefects/registry.js'; + +describe('known-defect policy registry', () => { + it('keeps every accepted defect owned, traceable, reasoned, and unexpired', () => { + const today = new Date().toISOString().slice(0, 10); + const ids = new Set(); + + for (const entry of allKnownDefects) { + expect(entry.localDefectId).toMatch(/^(?:QD-|CONNECT-)/); + expect(ids.has(entry.localDefectId), `duplicate local defect ID: ${entry.localDefectId}`).toBe(false); + ids.add(entry.localDefectId); + expect(entry.owner).toBeTruthy(); + expect(entry.target).toBeTruthy(); + expect(entry.reason).toBeTruthy(); + expect(entry.expiry).toMatch(/^\d{4}-\d{2}-\d{2}$/); + expect(entry.expiry.localeCompare(today), `${entry.localDefectId} expired on ${entry.expiry}`).toBeGreaterThanOrEqual(0); + } + }); +}); diff --git a/tests/unit/knownFunctions.spec.js b/tests/unit/knownFunctions.spec.js new file mode 100644 index 0000000..1547604 --- /dev/null +++ b/tests/unit/knownFunctions.spec.js @@ -0,0 +1,73 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; +import { knownFunctions } from '../../knownFunctions.js'; + +describe('knownFunctions', () => { + beforeEach(() => { + vi.useFakeTimers(); + vi.setSystemTime(new Date('2026-01-15T12:00:00.000Z')); + }); + + afterEach(() => vi.useRealTimers()); + + it('evaluates boolean composition', () => { + expect(knownFunctions.and(true, 'value')).toBe('value'); + expect(knownFunctions.and(false, 'value')).toBe(false); + expect(knownFunctions.or('', 'fallback')).toBe('fallback'); + expect(knownFunctions.or('first', 'fallback')).toBe('first'); + expect(knownFunctions.isNotDefined('')).toBe(true); + expect(knownFunctions.isNotDefined('set')).toBe(false); + expect(knownFunctions.setFalse('ignored', 'ignored')).toBe(false); + }); + + it('resolves defined values, numeric fallbacks, and state-backed identifiers', () => { + const appState = { findResponseValue: vi.fn((key) => key === 'KNOWN' ? 'stored' : undefined) }; + + expect(knownFunctions.isDefined('4', '9', appState)).toBe('4'); + expect(knownFunctions.isDefined('', '9', appState)).toBe('9'); + expect(knownFunctions.isDefined('KNOWN', 'fallback', appState)).toBe('stored'); + expect(knownFunctions.isDefined('MISSING', 'fallback', appState)).toBe('fallback'); + }); + + it('calculates minimum and maximum while ignoring nonnumeric operands', () => { + expect(knownFunctions.min('', '')).toBe(''); + expect(knownFunctions.max('', '')).toBe(''); + expect(knownFunctions.min('3.5', '7')).toBe(3.5); + expect(knownFunctions.min('unknown', '7')).toBe(7); + expect(knownFunctions.max('3.5', '7')).toBe(7); + expect(knownFunctions.max('3.5', 'unknown')).toBe(3.5); + }); + + it('compares scalar, array, boolean, undefined, quoted, and current-date values', () => { + expect(knownFunctions.equals(undefined, 'undefined')).toBe(true); + expect(knownFunctions.doesNotEqual(undefined, 'undefined')).toBe(false); + expect(knownFunctions.equals('hello', '"hello"')).toBe(true); + expect(knownFunctions.equals(true, 'true')).toBe(true); + expect(knownFunctions.equals(false, 'false')).toBe(true); + expect(knownFunctions.doesNotEqual(false, 'true')).toBe(true); + expect(knownFunctions.doesNotEqual(true, 'false')).toBe(true); + expect(knownFunctions.equals('2026-01-15', '_TODAY_')).toBe(true); + expect(knownFunctions.doesNotEqual('2026-01-14', '_TODAY_')).toBe(true); + expect(knownFunctions.equals(['1', '2'], '2')).toBe(true); + expect(knownFunctions.doesNotEqual(['1', '2'], '3')).toBe(true); + expect(knownFunctions.equals('1', '2')).toBe(false); + expect(knownFunctions.doesNotEqual('1', '1')).toBe(false); + }); + + it('evaluates numeric comparisons and arithmetic', () => { + expect(knownFunctions.lessThan('1', '2')).toBe(true); + expect(knownFunctions.lessThanOrEqual('2', '2')).toBe(true); + expect(knownFunctions.greaterThan('3', '2')).toBe(true); + expect(knownFunctions.greaterThanOrEqual('3', '3')).toBe(true); + expect(knownFunctions.difference('10', '3')).toBe(7); + expect(knownFunctions.sum('10', '3')).toBe(13); + expect(knownFunctions.percentDiff('10', '3')).toBeCloseTo(0.7); + }); + + it('returns NaN for invalid percentage inputs and counts choices safely', () => { + expect(knownFunctions.percentDiff(null, '2')).toBeNaN(); + expect(knownFunctions.percentDiff('2', null)).toBeNaN(); + expect(knownFunctions.percentDiff(2, '1')).toBeNaN(); + expect(knownFunctions.numberOfChoicesSelected(undefined)).toBe(0); + expect(knownFunctions.numberOfChoicesSelected(['a', 'b'])).toBe(2); + }); +}); diff --git a/tests/unit/stateManager.spec.js b/tests/unit/stateManager.spec.js new file mode 100644 index 0000000..e7fec17 --- /dev/null +++ b/tests/unit/stateManager.spec.js @@ -0,0 +1,386 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; + +async function createManager(initialState = {}, store = vi.fn(async () => ({ code: 200 }))) { + vi.resetModules(); + const questionnaire = await import('../../questionnaire.js'); + questionnaire.moduleParams.questName = 'STATE_TEST'; + questionnaire.moduleParams.previousResults = { PRIOR: 7 }; + questionnaire.moduleParams.errorLogger = vi.fn(); + questionnaire.moduleParams.questDiv = document.body; + questionnaire.questionQueue.clear(); + questionnaire.questionQueue.add('Q1'); + questionnaire.questionQueue.next(); + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(store, initialState); + const manager = stateModule.getStateManager(); + const questionProcessor = { + checkLoopMaxData: vi.fn(), + findQuestion: vi.fn(() => ({ question: null })), + findGridRadioCheckboxEle: vi.fn(() => null), + }; + manager.setQuestionProcessor(questionProcessor); + return { + manager, + moduleParams: questionnaire.moduleParams, + questionProcessor, + questionQueue: questionnaire.questionQueue, + store, + }; +} + +describe('state manager', () => { + beforeEach(() => { + document.body.innerHTML = '
'; + }); + + it('stores primitive and compound active response shapes and removes them', async () => { + const { manager } = await createManager(); + + manager.setNumResponseInputs('Q1', 1); + manager.setResponse('Q1', 'Q1', 1, 'yes'); + expect(manager.getActiveQuestionState()).toEqual({ Q1: 'yes' }); + + manager.removeResponse('Q1'); + expect(manager.getActiveQuestionState()).toEqual({ Q1: undefined }); + + manager.setNumResponseInputs('Q2', 2); + manager.setResponse('Q2', 'ROW_A', 2, '1'); + manager.setResponse('Q2', 'ROW_B', 2, ['2', '3']); + expect(manager.getActiveQuestionState()).toEqual({ Q1: undefined, Q2: { ROW_A: '1', ROW_B: ['2', '3'] } }); + + manager.removeResponseItem('Q2', 'ROW_A', 2); + expect(manager.getActiveQuestionState().Q2).toEqual({ ROW_A: undefined, ROW_B: ['2', '3'] }); + + manager.removeResponse('Q2'); + expect(manager.getActiveQuestionState().Q2).toBeUndefined(); + + manager.setResponse('Q3', 'Q3', 1, 'temporary'); + manager.setResponse('Q3', 'Q3', 1, ''); + expect(manager.getActiveQuestionState().Q3).toBeUndefined(); + }); + + it('keeps live response mappings and cache entries coherent through removals', async () => { + const { manager } = await createManager(); + + manager.setResponse('SINGLE', 'SINGLE', 1, 'yes'); + manager.setResponse('MULTI', 'FIRST', 2, 'one'); + manager.setResponse('MULTI', 'SECOND', 2, ['two', 'three']); + + expect(manager.getResponseToQuestionMapping()).toEqual({ + SINGLE: 'SINGLE', + 'FIRST.MULTI': 'MULTI.FIRST', + 'SECOND.MULTI': 'MULTI.SECOND', + }); + expect(manager.getCache()).toEqual({ + SINGLE: 'yes', + 'FIRST.MULTI': 'one', + 'SECOND.MULTI': ['two', 'three'], + }); + expect(manager.findResponseValue('SINGLE')).toBe('yes'); + expect(manager.findResponseValue('FIRST', 'MULTI')).toBe('one'); + + manager.removeResponseItem('SINGLE', 'SINGLE', 1); + manager.setResponse('MULTI', 'FIRST', 2, ''); + manager.removeResponseItem('MISSING', 'MISSING', 1); + + expect(manager.getResponseToQuestionMapping()).toEqual({ + 'SECOND.MULTI': 'MULTI.SECOND', + }); + expect(manager.getCache()).toEqual({ + 'SECOND.MULTI': ['two', 'three'], + }); + expect(manager.findResponseValue('SINGLE')).toBeUndefined(); + expect(manager.findResponseValue('FIRST', 'MULTI')).toBeUndefined(); + }); + + it('preserves direct stored-value shapes and numeric Concept ID boundaries', async () => { + const { manager } = await createManager({ + DIRECT_ARRAY: ['one', 'two'], + FALSE_VALUE: false, + MULTI_VALUE: { FIRST: 'one', SECOND: 'two' }, + SINGLE_WRAPPER: { ONLY: 'unwrapped' }, + ZERO_VALUE: 0, + 123456789: 'concept-value', + }); + + expect(manager.getItem('DIRECT_ARRAY')).toEqual(['one', 'two']); + expect(manager.findResponseValue('DIRECT_ARRAY')).toEqual(['one', 'two']); + expect(manager.findResponseValue('FALSE_VALUE')).toBe(false); + expect(manager.findResponseValue('MULTI_VALUE')).toEqual({ FIRST: 'one', SECOND: 'two' }); + expect(manager.findResponseValue('SINGLE_WRAPPER')).toBe('unwrapped'); + expect(manager.findResponseValue('ZERO_VALUE')).toBe(0); + expect(manager.findResponseValue('123456789')).toBe('concept-value'); + expect(manager.findResponseValue('99999999')).toBe('99999999'); + expect(manager.findResponseValue('1000000000')).toBe('1000000000'); + }); + + it('loads nested state and builds deterministic response mappings and cache entries', async () => { + const { manager } = await createManager(); + manager.loadInitialSurveyState({ + Q1: 'one', + Q2: { ROW_A: 'yes', ROW_B: ['1', '2'] }, + treeJSON: 'ignored-in-mapping', + }); + + expect(manager.getResponseToQuestionMapping()).toEqual({ + Q1: 'Q1', + 'ROW_A.Q2': 'Q2.ROW_A', + 'ROW_B.Q2': 'Q2.ROW_B', + }); + expect(manager.findResponseValue('Q1')).toBe('one'); + expect(manager.findResponseValue('ROW_A', 'Q2')).toBe('yes'); + expect(manager.findResponseValue('ROW_B', 'Q2')).toEqual(['1', '2']); + expect(manager.findResponseValue('PRIOR')).toBe('7'); + expect(manager.findResponseValue('42')).toBe('42'); + }); + + it('resolves unique nested and nonalphabetic keys while retaining falsey cached values', async () => { + const { manager, moduleParams } = await createManager(); + manager.loadInitialSurveyState({ + Q1: { UNIQUE: 'value', D_123_1: 'coded-value' }, + Q2: { ZERO: 0, FALSE: false, EMPTY: [] }, + treeJSON: 'ignored-in-mapping', + }); + + expect(manager.findResponseValue('UNIQUE')).toBe('value'); + expect(manager.findResponseValue('D_123_1')).toBe('coded-value'); + expect(manager.findResponseValue('ZERO')).toBe(0); + expect(manager.findResponseValue('FALSE')).toBe(false); + expect(manager.findResponseValue('EMPTY')).toEqual([]); + expect(manager.getCache()).toMatchObject({ + 'ZERO.Q2': 0, + 'FALSE.Q2': false, + 'EMPTY.Q2': [], + }); + expect(moduleParams.errorLogger).not.toHaveBeenCalled(); + }); + + it('sets and clears the active response when navigating restored questions', async () => { + const { manager } = await createManager(); + manager.loadInitialSurveyState({ Q1: 'saved', Q2: { FIELD: 'value' } }); + + manager.setActiveQuestionState('Q1'); + expect(manager.getActiveQuestionState()).toEqual({ Q1: 'saved' }); + manager.clearActiveQuestionState(); + expect(manager.getActiveQuestionState()).toEqual({}); + manager.setActiveQuestionState('MISSING'); + expect(manager.getActiveQuestionState()).toEqual({}); + }); + + it('returns top-level state snapshots and clears indexes when retrieved data is empty', async () => { + const { manager } = await createManager(); + manager.loadInitialSurveyState({ Q1: 'saved' }); + + const surveySnapshot = manager.getSurveyState(); + const mappingSnapshot = manager.getResponseToQuestionMapping(); + const cacheSnapshot = manager.getCache(); + surveySnapshot.Q1 = 'changed outside the manager'; + mappingSnapshot.Q1 = 'changed outside the manager'; + cacheSnapshot.Q1 = 'changed outside the manager'; + + expect(manager.getSurveyState()).toEqual({ Q1: 'saved' }); + expect(manager.getResponseToQuestionMapping()).toEqual({ Q1: 'Q1' }); + expect(manager.getCache()).toEqual({ Q1: 'saved' }); + + manager.loadInitialSurveyState(null); + expect(manager.getSurveyState()).toEqual({}); + expect(manager.getResponseToQuestionMapping()).toEqual({}); + expect(manager.getCache()).toEqual({}); + }); + + it('delegates valid question lookup through the configured processor', async () => { + const { manager, questionProcessor } = await createManager(); + const question = document.createElement('form'); + question.id = 'Q2'; + questionProcessor.findQuestion.mockReturnValue({ question }); + + expect(manager.getQuestionProcessor()).toBe(questionProcessor); + expect(manager.getQuestionHTMLByID('Q2')).toBe(question); + expect(questionProcessor.findQuestion).toHaveBeenCalledWith('Q2'); + }); + + it('namespaces changed values and legacy tree JSON when syncing to the host store', async () => { + const { manager, questionProcessor, store } = await createManager(); + const next = document.querySelector('.next'); + manager.setResponse('Q1', 'Q1', 1, 'answer'); + + manager.syncToStore(next); + await vi.waitFor(() => expect(store).toHaveBeenCalledOnce()); + + const payload = store.mock.calls[0][0]; + expect(Object.keys(payload).sort()).toEqual(['STATE_TEST.Q1', 'STATE_TEST.treeJSON']); + expect(payload['STATE_TEST.Q1']).toBe('answer'); + expect(JSON.parse(payload['STATE_TEST.treeJSON'])).toMatchObject({ currentNode: 'Q1' }); + expect(questionProcessor.checkLoopMaxData).toHaveBeenCalledWith('Q1', 'answer'); + expect(manager.getSurveyState().Q1).toBe('answer'); + expect(manager.getActiveQuestionState()).toEqual({}); + + store.mockClear(); + questionProcessor.checkLoopMaxData.mockClear(); + manager.syncToStore(next); + await vi.waitFor(() => expect(store).toHaveBeenCalledOnce()); + + expect(store.mock.calls[0][0]).toEqual({ + 'STATE_TEST.treeJSON': expect.any(String), + }); + expect(questionProcessor.checkLoopMaxData).not.toHaveBeenCalled(); + }); + + it('sends an explicit namespaced clear when a single response is removed', async () => { + const { manager, store } = await createManager(); + manager.setResponse('Q1', 'Q1', 1, 'answer'); + manager.removeResponseItem('Q1', 'Q1', 1); + + manager.syncToStore(document.querySelector('.next')); + await vi.waitFor(() => expect(store).toHaveBeenCalledOnce()); + + expect(store.mock.calls[0][0]).toHaveProperty('STATE_TEST.Q1', undefined); + expect(manager.getSurveyState()).toHaveProperty('Q1', undefined); + }); + + it('submits completion metadata without mutating the production payload contract', async () => { + const { manager, store } = await createManager(); + + await expect(manager.submitSurvey()).resolves.toEqual({ code: 200 }); + const payload = store.mock.calls[0][0]; + expect(payload['STATE_TEST.COMPLETED']).toBe(true); + expect(payload['STATE_TEST.COMPLETED_TS']).toBeInstanceOf(Date); + expect(JSON.parse(payload['STATE_TEST.treeJSON'])).toMatchObject({ currentNode: 'Q1' }); + }); + + it('propagates submit-store rejection to the host caller', async () => { + const storeError = new Error('Synthetic submit rejection'); + const store = vi.fn(async () => { + throw storeError; + }); + const { manager } = await createManager({}, store); + + await expect(manager.submitSurvey()).rejects.toBe(storeError); + expect(store).toHaveBeenCalledOnce(); + }); + + it('rejects invalid state keys instead of creating ambiguous state', async () => { + const { manager, moduleParams } = await createManager(); + + expect(() => manager.setResponse(null, 'key', 1, 'value')).toThrow('must be strings'); + expect(() => manager.getItem(null)).toThrow('must be a string'); + expect(() => manager.findResponseValue(null)).toThrow('must be strings'); + expect(() => manager.removeResponse(3)).toThrow('must be a string'); + expect(() => manager.setActiveQuestionState(3)).toThrow('must be a string'); + expect(() => manager.getQuestionHTMLByID(3)).toThrow('must be a string'); + expect(() => manager.removeResponseItem('Q', 4, 2)).toThrow('must be strings'); + manager.loadInitialSurveyState({ Q: 'primitive' }); + manager.setActiveQuestionState('Q'); + expect(() => manager.removeResponseItem('Q', 'nested', 2)).toThrow('Key not found'); + expect(moduleParams.errorLogger).not.toHaveBeenCalled(); + }); + + it('clears all runtime state while retaining a usable manager instance', async () => { + const { manager } = await createManager(); + manager.loadInitialSurveyState({ Q1: 'saved' }); + manager.setActiveQuestionState('Q1'); + + manager.clearAllState(); + + expect(manager.getSurveyState()).toEqual({}); + expect(manager.getActiveQuestionState()).toEqual({}); + expect(manager.getResponseToQuestionMapping()).toEqual({}); + expect(manager.getCache()).toEqual({}); + expect(manager.getQuestionProcessor()).toBeNull(); + }); + + it('clears the existing manager when the module graph is initialized again', async () => { + const { manager } = await createManager(); + manager.loadInitialSurveyState({ Q1: 'saved' }); + manager.setActiveQuestionState('Q1'); + + const stateModule = await import('../../stateManager.js'); + stateModule.initializeStateManager(vi.fn(async () => ({ code: 200 })), { Q2: 'ignored' }); + + expect(stateModule.getStateManager()).toBe(manager); + expect(manager.getSurveyState()).toEqual({}); + expect(manager.getActiveQuestionState()).toEqual({}); + }); + + it('manages response-input count caching and clears entries for inactive forms', async () => { + const { manager } = await createManager(); + manager.setNumResponseInputs('Q1', 2); + manager.setNumResponseInputs('Q2', 4); + expect(manager.getNumResponseInputs('Q1')).toBe(2); + expect(manager.getNumResponseInputs('Q2')).toBe(4); + + manager.clearOtherResponseInputEntries('Q2'); + expect(manager.getNumResponseInputs('Q1')).toBeUndefined(); + expect(manager.getNumResponseInputs('Q2')).toBe(4); + }); + + it('returns direct object responses and disambiguates duplicate nested response keys', async () => { + const { manager, moduleParams } = await createManager(); + manager.loadInitialSurveyState({ + COMBO: { FIRST: '1', SECOND: '2' }, + Q1: { NAME: 'Alpha' }, + Q2: { NAME: 'Beta' }, + Q: { Q: 'self-keyed' }, + }); + + expect(manager.findResponseValue('COMBO')).toEqual({ FIRST: '1', SECOND: '2' }); + expect(manager.findResponseValue('Q')).toBe('self-keyed'); + expect(manager.findResponseValue('NAME')).toBe('Alpha'); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('Multiple candidate keys found')); + expect(manager.findResponseValue('NA')).toBeUndefined(); + expect(moduleParams.errorLogger).toHaveBeenCalledWith(expect.stringContaining('No exact match found for NA')); + }); + + it('detects circular response objects while keeping non-circular keys available', async () => { + const { manager, moduleParams } = await createManager(); + const circular = { VALUE: 'available' }; + circular.SELF = circular; + + manager.loadInitialSurveyState({ Q: circular }); + + expect(manager.findResponseValue('VALUE', 'Q')).toBe('available'); + expect(moduleParams.errorLogger).toHaveBeenCalledWith('Error: Circular reference found in QuestionIDMapping -> traverse()'); + }); + + it('logs a filtered renderer snapshot and supports a hostless store/submit boundary', async () => { + const { manager, moduleParams } = await createManager({ + NULL_VALUE: null, + NESTED: { KEEP: 'yes', DROP: undefined, ARRAY: ['one', undefined] }, + }, null); + const log = vi.spyOn(console, 'log').mockImplementation(() => {}); + moduleParams.isRenderer = true; + manager.setResponse('Q1', 'Q1', 1, 'answer'); + + manager.syncToStore(document.querySelector('.next')); + + expect(log).toHaveBeenCalledWith('StateManager -> SURVEY STATE:', { + NESTED: { KEEP: 'yes', ARRAY: ['one'] }, + Q1: 'answer', + }); + expect(await manager.submitSurvey()).toBeUndefined(); + }); + + it('logs invalid store rollback click types and automatically hides the recovery modal', async () => { + vi.useFakeTimers(); + document.body.innerHTML += '
'; + const store = vi.fn(async () => ({ code: 503 })); + const { manager, moduleParams } = await createManager({ PREVIOUS: 'saved' }, store); + const button = document.createElement('button'); + button.dataset.clickType = 'unknown'; + manager.setResponse('Q1', 'Q1', 1, 'answer'); + + manager.syncToStore(button); + await vi.waitFor(() => expect(moduleParams.errorLogger).toHaveBeenCalledWith('Invalid click type (handleStoreError):', 'unknown')); + expect(document.querySelector('#storeErrorModal').classList).toContain('show'); + await vi.runAllTimersAsync(); + expect(document.querySelector('#storeErrorModal').classList).not.toContain('show'); + }); + + it('returns null to renderer callers before initialization and throws for runtime callers', async () => { + vi.resetModules(); + const { getStateManager } = await import('../../stateManager.js'); + expect(getStateManager(true)).toBeNull(); + expect(() => getStateManager()).toThrow('has not been initialized'); + }); +}); diff --git a/tests/unit/testOnlyScope.spec.js b/tests/unit/testOnlyScope.spec.js new file mode 100644 index 0000000..8c620ab --- /dev/null +++ b/tests/unit/testOnlyScope.spec.js @@ -0,0 +1,156 @@ +import { execFileSync } from 'node:child_process'; +import { mkdtemp, mkdir, rename, rm, writeFile } from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; +import { afterEach, describe, expect, it } from 'vitest'; + +import { + checkTestOnlyScope, + parseScopeCliArgs, + scopeDecision, +} from '../quality/scripts/checkTestOnlyScope.mjs'; + +const temporaryRepositories = []; + +afterEach(async () => { + await Promise.all(temporaryRepositories.splice(0).map((root) => rm(root, { recursive: true, force: true }))); +}); + +describe('bootstrap test-only scope policy', () => { + it('requires an explicit value for the optional head revision', () => { + expect(parseScopeCliArgs([])).toEqual({}); + expect(parseScopeCliArgs(['--head', 'abc123'])).toEqual({ headRevision: 'abc123' }); + expect(() => parseScopeCliArgs(['--head'])).toThrow('--head requires'); + expect(() => parseScopeCliArgs(['--base', 'abc123'])).toThrow('Unknown test-only scope argument'); + }); + + it.each([ + 'tests/unit/example.spec.js', + '.github/workflows/quest-pr.yml', + 'docs/testing.md', + 'package.json', + 'package-lock.json', + 'package-fixture.json', + 'playwright.config.js', + 'vite.config.js', + 'vitest.config.js', + '.node-version', + '.nvmrc', + '.gitignore', + 'README.md', + ])('allows reviewed test infrastructure at %s', (repositoryPath) => { + expect(scopeDecision(repositoryPath)).toEqual({ allowed: true }); + }); + + it.each([ + ['main.js', 'root production JavaScript'], + ['eventHandlers.js', 'root production JavaScript'], + ['ActiveLogic.css', 'root production CSS/HTML'], + ['index.html', 'root production CSS/HTML'], + ['i18n/en.js', 'production i18n source'], + ['assets/example.png', 'not in the bootstrap test-infrastructure allowlist'], + ['tests/../main.js', 'not a safe normalized repository-relative path'], + ])('rejects %s', (repositoryPath, expectedReason) => { + expect(scopeDecision(repositoryPath)).toEqual({ + allowed: false, + reason: expect.stringContaining(expectedReason), + }); + }); + + it('accepts an allowed descendant and reports a deterministic path inventory', async () => { + const repository = await createRepository(); + await write(repository.root, 'tests/unit/new.spec.js', 'export const covered = true;\n'); + await write(repository.root, 'docs/testing.md', '# Testing\n'); + const headSha = commit(repository.root, 'add test infrastructure'); + + expect(checkTestOnlyScope({ + repositoryRoot: repository.root, + baseRevision: repository.baseSha, + headRevision: headSha, + })).toEqual({ + baseSha: repository.baseSha, + headSha, + changedPaths: ['docs/testing.md', 'tests/unit/new.spec.js'], + }); + }); + + it('reports every production path changed by a descendant', async () => { + const repository = await createRepository(); + await write(repository.root, 'main.js', 'export const production = 2;\n'); + await write(repository.root, 'i18n/en.js', 'export default { next: "Continue" };\n'); + const headSha = commit(repository.root, 'change production'); + + expect(() => checkTestOnlyScope({ + repositoryRoot: repository.root, + baseRevision: repository.baseSha, + headRevision: headSha, + })).toThrowError([ + 'Bootstrap test-only scope gate failed.', + `Only reviewed test infrastructure may differ from ${repository.baseSha}.`, + '- i18n/en.js: production i18n source is outside this test-only pull request', + '- main.js: root production JavaScript is outside this test-only pull request', + ].join('\n')); + }); + + it('cannot hide a production deletion behind a rename into tests', async () => { + const repository = await createRepository(); + await mkdir(path.join(repository.root, 'tests'), { recursive: true }); + await rename(path.join(repository.root, 'main.js'), path.join(repository.root, 'tests', 'main.js')); + const headSha = commit(repository.root, 'move production into tests'); + + expect(() => checkTestOnlyScope({ + repositoryRoot: repository.root, + baseRevision: repository.baseSha, + headRevision: headSha, + })).toThrow(/main\.js: root production JavaScript/); + }); + + it('rejects an allowed-path commit when the pinned base is not its ancestor', async () => { + const repository = await createRepository(); + git(repository.root, 'switch', '--detach', repository.rootSha); + await write(repository.root, 'tests/unit/sibling.spec.js', 'export const sibling = true;\n'); + const siblingSha = commit(repository.root, 'create unrelated test branch'); + + expect(() => checkTestOnlyScope({ + repositoryRoot: repository.root, + baseRevision: repository.baseSha, + headRevision: siblingSha, + })).toThrow(`Bootstrap base ${repository.baseSha} is not an ancestor of head ${siblingSha}.`); + }); +}); + +async function createRepository() { + const root = await mkdtemp(path.join(os.tmpdir(), 'quest-test-only-scope-')); + temporaryRepositories.push(root); + git(root, 'init', '--quiet'); + git(root, 'config', 'user.email', 'quest-tests@example.invalid'); + git(root, 'config', 'user.name', 'Quest Tests'); + + await write(root, 'seed.txt', 'repository seed\n'); + const rootSha = commit(root, 'seed repository'); + await write(root, 'main.js', 'export const production = 1;\n'); + await write(root, 'ActiveLogic.css', '.question { display: block; }\n'); + await write(root, 'index.html', '
Quest
\n'); + await write(root, 'i18n/en.js', 'export default { next: "Next" };\n'); + const baseSha = commit(root, 'create production baseline'); + return { root, rootSha, baseSha }; +} + +async function write(repositoryRoot, relativePath, content) { + const filePath = path.join(repositoryRoot, relativePath); + await mkdir(path.dirname(filePath), { recursive: true }); + await writeFile(filePath, content, 'utf8'); +} + +function commit(repositoryRoot, message) { + git(repositoryRoot, 'add', '--all'); + git(repositoryRoot, 'commit', '--quiet', '--message', message); + return git(repositoryRoot, 'rev-parse', 'HEAD').trim(); +} + +function git(repositoryRoot, ...arguments_) { + return execFileSync('git', ['-C', repositoryRoot, ...arguments_], { + encoding: 'utf8', + stdio: ['ignore', 'pipe', 'pipe'], + }); +} diff --git a/tests/unit/tree.spec.js b/tests/unit/tree.spec.js new file mode 100644 index 0000000..d187311 --- /dev/null +++ b/tests/unit/tree.spec.js @@ -0,0 +1,167 @@ +import { describe, expect, it, vi } from 'vitest'; +import { Tree } from '../../tree.js'; + +function buildBranchedTree() { + const tree = new Tree(); + tree.add(['Q1', 'Q2', 'Q3']); + tree.next(); + tree.add('Q1A'); + tree.next(); + tree.add('Q1B'); + tree.next(); + return tree; +} + +describe('Tree', () => { + it('starts empty at an iterable root node', () => { + const tree = new Tree(); + + expect(tree.isEmpty()).toBe(true); + expect(tree.currentNode).toBe(tree.rootNode); + expect(tree[Symbol.iterator]()).toBe(tree); + expect(tree.next()).toEqual({ done: true, value: undefined }); + expect(tree.previous()).toEqual({ done: true, value: undefined }); + expect(tree.isFirst()).toBe(false); + }); + + it('adds scalar and array children while filtering false array entries', () => { + const tree = new Tree(); + tree.add('Q1'); + tree.add(['Q2', null, '', 'Q3']); + + expect(tree.rootNode.children.map(({ value }) => value)).toEqual(['Q1', 'Q2', 'Q3']); + expect(tree.rootNode.children.every(({ parent }) => parent === tree.rootNode)).toBe(true); + }); + + it.each([null, undefined, '', false, 0])('rejects a false scalar value: %s', (value) => { + expect(() => new Tree().add(value)).toThrow('adding a falsy value to the tree.'); + }); + + it('rejects an array containing no usable values', () => { + expect(() => new Tree().add([null, '', false])).toThrow('cannot add an empty or falsy array to the tree'); + }); + + it('walks backward to the deepest previous sibling and clears abandoned descendants', () => { + const tree = buildBranchedTree(); + tree.next(); + expect(tree.currentNode.value).toBe('Q2'); + + const previous = tree.previous(); + expect(previous.value.value).toBe('Q1B'); + expect(tree.currentNode.children).toEqual([]); + + expect(tree.previous().value.value).toBe('Q1A'); + expect(tree.previous().value.value).toBe('Q1'); + expect(tree.isFirst()).toBe(true); + expect(tree.previous()).toEqual({ done: true, value: undefined }); + }); + + it('pops only leaf nodes and preserves nodes that still have children', () => { + const tree = new Tree(); + tree.add(['Q1', 'Q2']); + tree.next(); + tree.add('Q1A'); + + tree.pop(); + expect(tree.currentNode.value).toBe('Q1'); + expect(tree.currentNode.children.map(({ value }) => value)).toEqual(['Q1A']); + + tree.next(); + tree.pop(); + expect(tree.currentNode.value).toBe('Q1'); + expect(tree.currentNode.children).toEqual([]); + }); + + it('clears all navigation state', () => { + const tree = buildBranchedTree(); + tree.clear(); + + expect(tree.isEmpty()).toBe(true); + expect(tree.currentNode).toBe(tree.rootNode); + }); + + it('serializes, creates, and reloads the same tree shape and current node', () => { + const tree = buildBranchedTree(); + const json = tree.toJSON(); + const created = Tree.fromJSON(json); + + expect(created.toJSON()).toBe(json); + expect(created.currentNode.value).toBe('Q1B'); + + const existing = new Tree(); + existing.add('discard-me'); + existing.loadFromJSON(json); + expect(existing.toJSON()).toBe(json); + expect(existing.currentNode.value).toBe('Q1B'); + }); + + it('rejects malformed serialized input and invalid vanilla objects', () => { + expect(() => Tree.fromJSON('{not-json')).toThrow(); + expect(() => new Tree().loadFromVanillaObject({ currentNode: null, rootNode: {} })).toThrow(); + + const missingRootChildren = new Tree(); + missingRootChildren.rootNode.children = null; + expect(() => missingRootChildren.loadFromVanillaObject({ + currentNode: null, + rootNode: { children: [] }, + })).toThrow('children is null?'); + }); + + it('returns terminal results for nodes outside the tree without mutating it', () => { + const tree = new Tree(); + tree.add('Q1'); + const unknownNode = { value: 'UNKNOWN' }; + + expect(tree.rootNode.lookForNext(unknownNode)).toEqual({ done: true, value: undefined }); + expect(tree.rootNode.lookForPreviousNode(unknownNode)).toEqual({ done: true, value: undefined }); + + tree.rootNode.removeChild(unknownNode); + expect(tree.rootNode.children.map(({ value }) => value)).toEqual(['Q1']); + }); + + it('reports the end of a root sequence and a completed nested branch', () => { + const rootSequence = new Tree(); + rootSequence.add('Q1'); + expect(rootSequence.rootNode.lookForNext(rootSequence.rootNode.children[0])) + .toEqual({ done: true, value: undefined }); + + const nested = new Tree(); + nested.add('Q1'); + nested.next(); + nested.add('Q1A'); + nested.next(); + expect(nested.currentNode.next()).toEqual({ done: true, value: undefined }); + }); + + it('creates an independent empty tree through a node iterator helper', () => { + const tree = new Tree(); + tree.add('Q1'); + + const iterator = tree.rootNode.iterator(); + expect(iterator).toBeInstanceOf(Tree); + expect(iterator).not.toBe(tree); + expect(iterator.isEmpty()).toBe(true); + }); + + it('coerces a supplied lookahead node value without mutating that node', () => { + const nextNode = { value: 'Q1' }; + const receiver = { nextNode }; + + expect(Tree.prototype.hasNext.call(receiver)).toBe(true); + expect(nextNode).toEqual({ value: 'Q1' }); + + nextNode.value = null; + expect(Tree.prototype.hasNext.call(receiver)).toBe(false); + }); + + it('prints each traversable value and marks the current node', () => { + const log = vi.spyOn(console, 'log').mockImplementation(() => {}); + const tree = buildBranchedTree(); + + tree.printTree(); + + expect(log.mock.calls.flat().join(' ')).toContain('Q1B'); + expect(log.mock.calls.flat().join(' ')).toContain('<=== currentNode'); + }); + +}); diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..a8c36bd --- /dev/null +++ b/vite.config.js @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite'; +import { questDependencyResolver } from './tests/config/moduleResolution.js'; + +export default defineConfig({ + plugins: [questDependencyResolver], + optimizeDeps: { + include: ['mathjs'], + }, + server: { + host: '127.0.0.1', + port: 4173, + strictPort: true, + }, + preview: { + host: '127.0.0.1', + port: 4173, + strictPort: true, + }, +}); diff --git a/vitest.config.js b/vitest.config.js new file mode 100644 index 0000000..1711f8d --- /dev/null +++ b/vitest.config.js @@ -0,0 +1,41 @@ +import { defineConfig } from 'vitest/config'; +import { questDependencyResolver } from './tests/config/moduleResolution.js'; + +export default defineConfig({ + plugins: [questDependencyResolver], + test: { + environment: 'jsdom', + environmentOptions: { + jsdom: { + // Use a synthetic non-local origin to model Quest embedded in Connect. + url: 'https://connect.test/', + }, + }, + setupFiles: ['./tests/setup/jsdom.js'], + include: ['./tests/{unit,integration,corpus}/**/*.spec.js'], + clearMocks: true, + restoreMocks: true, + mockReset: true, + testTimeout: 15_000, + hookTimeout: 15_000, + coverage: { + provider: 'v8', + reporter: ['text', 'json-summary', 'html', 'lcov'], + reportsDirectory: './coverage', + include: [ + '*.js', + 'i18n/*.js' + ], + exclude: [ + 'quest.js', + '*.config.js' + ], + thresholds: { + statements: 75, + branches: 65, + functions: 75, + lines: 75 + } + } + } +});